什么是基于javascript标志切换JSF组件呈现的最简单方法? 我想根据用户是否启用了HTML5来显示某些内容......例如。地理位置,原生日期选择器等。
谢谢,d
答案 0 :(得分:1)
此答案假设您知道如何使用javascript检查用户是否启用了HTML5。这是个主意。 javascript与JSF服务器托管bean通信的一种方法是让javascript在隐藏的click
上调用commandButton
事件。所以这就是你如何做到的。然后,此命令按钮可以调用辅助bean上的函数,例如设置标记以在页面上显示某个组件。对于ajax请求,您可以使用具有p:commandButton
属性的PrimeFaces update
进行部分更新。
inputText
和p:commandButton
commandButton
上调用点击事件。 inputText
就在那里,您可以将标志传递回服务器。 例如:
<h:form style="display:none">
<h:inputText id="flag" value="#{myBean.flag}"/>
<p:commandButton id="button" actionListener="#{myBean.process}" update="..."/>
</h:form>
所以你的jQuery看起来像这样
if(user is HTML5 enabled){
jQuery("#flag").val("Flag that let you know user has HTML5 enable.")
jQuery("#button").click();
}else{
//Same thing as above but passing a flag that you know user dont have HTML5 enabled
}
在您的托管bean中,您将拥有
@ManagedBean
@RequestScoped
public class MyBean{
private String flag;
private boolean display;
//setter and getter for `flag` and `display`
public void process(){
if(flag.equals("HTML5")){
display = true;
}else{
display = false;
}
}
}
答案 1 :(得分:0)
您可以将组件的显示放在HTML div容器中,然后隐藏/显示该容器。
答案 2 :(得分:0)
你可以使用a4j:jsFunction组件。在你的bean和reRender中设置渲染标志