JSF javascript布尔值渲染

时间:2011-07-13 14:27:26

标签: javascript jsf geolocation rendered-attribute

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

谢谢,d

3 个答案:

答案 0 :(得分:1)

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

  1. 使用inputTextp:commandButton
  2. 在您的网页上隐藏表单
  3. 确定用户是否使用javascript启用HTML5,然后在commandButton上调用点击事件。 inputText就在那里,您可以将标志传递回服务器。
  4. 例如:

    <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中设置渲染标志