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