1

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

感谢:D

4

3 回答 3

1

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

  1. 在您的页面上使用 ainputText和 a隐藏表单p: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;
        }
    }
}    
于 2011-07-13T17:39:00.477 回答
0

您可以将组件的显示放在 HTML div 容器中,然后隐藏/显示该容器。

于 2011-07-13T15:47:06.160 回答
0

您可以使用 a4j:jsFunction 组件。在您的 bean 中设置渲染标志并重新渲染

于 2011-07-13T16:39:33.830 回答