2013-10-07 93 views
0

我在使用IE瀏覽器時遇到了我的jsf應用程序的問題。JSF selectCheckBoxMenu在IE中無法正常工作

jsf上的selectcheckboxmenu表現出錯,並且菜單項的複選框已移到項目下方,複選框仍然存在。下面是我面臨什麼樣的截圖: Image and video hosting by TinyPic

[IMG] http://i43.tinypic.com/8yb976.jpg[/IMG]

的selectcheckboxmenu代碼如下:

<p:selectCheckboxMenu value="#{formBean.selectedMovies}" label="Movies" 
    filter="true" filterText="Filter" filterMatchMode="startsWith" 
    panelStyle="width:220px"> 
    <f:selectItems value="#{formBean.movies}" /> 
</p:selectCheckboxMenu> 

煩請告訴我,我要去哪裏錯了和什麼問題。 在此先感謝。

回答

2

IE存在兼容性問題。 Primefaces在IE9兼容性上運行良好。 而你的複選框不起作用,因爲這個。

我已經經歷了相同的問題。所以,你必須使用JSF

public class UACompatibleHeaderPhaseListener implements PhaseListener { 
@Override 
public void afterPhase(PhaseEvent arg0){} 

@Override 
public void beforePhase(PhaseEvent event){ 
    final FacesContext facesContext = event.getFacesContext(); 
    final HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse(); 
    response.addHeader("X-UA-Compatible", "IE=edge"); 
} 

@Override 
public PhaseId getPhaseId() { 
    return PhaseId.RENDER_RESPONSE; 
} 
} 

的生命週期,並於faces-config.xml中設置兼容性視圖只需將類與包名

<lifecycle> 
    <phase-listener> 
    com.jsf.listener.UACompatibleHeaderPhaseListener 
    </phase-listener> 
</lifecycle> 
+0

非常感謝幫助它在IE9中正常工作。有沒有什麼辦法可以使它在IE 7和8上正常工作? – Kush

+0

我不會在預期的IE 7和8中工作...... – BholaVishwakarma

+0

在IE7和IE8中測試時,絕對不要以後再測試IE8。如果這意味着你必須建立一個虛擬機,那就去做吧。 IE9和IE10的兼容模式絕對是_awful_,並沒有正確模擬舊環境。根據我的經驗,IE8雖然正確地模擬了IE7。 – patstuart

1

我用CSS屬性固定它'vertical-align',

div.ui-selectcheckboxmenu.ui-widget{ 
width: 100% !important; 
} 
div.ui-widget-header.ui-corner-all.ui-selectcheckboxmenu-header.ui-helper-clearfix{ 
padding: 3px !important; 

} 
input.ui-inputfield.ui-inputtext.ui-widget.ui-state-default.ui-corner-all{ 

width: 90% !important; 

} 
div.ui-chkbox-box.ui-widget.ui-corner-all{ 
vertical-align: top !important; 
margin-top: 3px !important; 
} 
div.ui-selectcheckboxmenu-filter-container{ 
width:75% !important; 
vertical-align: top !important; 
margin-left: 2px !important; 
} 

在firefox,chrome和ie9上測試。