JSF javascript布尔渲染

JSF javascript boolean rendered

本文关键字:布尔渲 javascript JSF      更新时间:2023-09-26

根据javascript标志切换JSF组件的呈现最简单的方法是什么?我希望根据用户是否启用了HTML5来显示某些内容。地理位置,本机日期选择器等

谢谢,D

这个答案假设你知道如何使用javascript来检查用户是否启用了HTML5。这是我的想法。javascript与JSF服务器托管bean通信的一种方法是让javascript调用隐藏的commandButton上的click事件。这就是你要做的。然后,这个命令按钮可以调用后台bean上的函数,比如为在页面上显示某个组件设置一个标志。对于ajax请求,您可以使用带update属性的PrimeFaces p:commandButton来进行部分更新。

  1. 在你的页面上有一个inputTextp:commandButton的隐藏表单
  2. 确定用户是否使用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