根据javascript标志切换JSF组件的呈现最简单的方法是什么?我希望根据用户是否启用了HTML5来显示某些内容。地理位置,本机日期选择器等
谢谢,D
这个答案假设你知道如何使用javascript来检查用户是否启用了HTML5。这是我的想法。javascript与JSF服务器托管bean通信的一种方法是让javascript调用隐藏的commandButton
上的click
事件。这就是你要做的。然后,这个命令按钮可以调用后台bean上的函数,比如为在页面上显示某个组件设置一个标志。对于ajax请求,您可以使用带update
属性的PrimeFaces p:commandButton
来进行部分更新。
- 在你的页面上有一个
inputText
和p:commandButton
的隐藏表单 - 确定用户是否使用javascript启用HTML5,然后在
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;
}
}
}
是否可以将组件的显示放在HTMLdiv容器中,然后隐藏/显示该容器
您可以使用a4j:jsFunction组件。在你的bean中设置渲染标志和render