【问题标题】:Accessing bean attributes from jquery从 jquery 访问 bean 属性
【发布时间】:2013-09-17 06:55:40
【问题描述】:

假设我有一个带有布尔属性的 bean,称为 display。有什么方法可以从 jquery 访问该属性的值吗?类似的东西

$(document).ready(function(){ 
    if(bean.display){
       doSomething();
    }
}

【问题讨论】:

    标签: jquery jsf jsf-2


    【解决方案1】:

    在这个问题的上下文中,JSF 仅仅是一个 HTML/CSS/JS 代码生产者。只需让 JSF 打印一个 bean 属性,就好像它是 JS 代码的一部分。照常使用 EL 即可。

    <h:outputScript>
        $(document).ready(function(){ 
            if(#{bean.display}){
               doSomething();
            }
        }
    </h:outputScript>
    

    在网络浏览器中打开 JSF 页面,右键单击并查看源代码以查看生成的 HTML 输出。它应该看起来像这样:

    <script type="text/javascript">
        $(document).ready(function(){ 
            if(true){
               doSomething();
            }
        }
    </script>
    

    请注意,如果 JSF 正确地生成了 HTML 输出,您应该不会在 HTML 输出中看到任何 Java/JSF/EL 代码。您只需要编写 Java/JSF/EL 代码,使其准确生成所需的 HTML/CSS/JS 代码。


    或者,如果该脚本实际上包含在 JS 文件中,则让 JSF 将其打印为 JS 变量:

    <h:outputScript name="some.js" />
    <h:outputScript>var display = #{bean.display};</h:outputScript>
    

    $(document).ready(function(){ 
        if(display){
           doSomething();
        }
    }
    

    或者,如果您绝对想保留最初的 bean.display JS 对象语法,请这样做:

    <h:outputScript name="some.js" />
    <h:outputScript>var bean = { display: #{bean.display} };</h:outputScript>
    

    $(document).ready(function(){ 
        if(bean.display){
           doSomething();
        }
    }
    

    【讨论】:

      【解决方案2】:

      您也可以将其存储在一些outputTextinputText

      例如:

      <h:outputText id="my_display" value="#{myBean.display}" style="display:none"/>
      

      并像这样使用它:

      $(document).ready(function(){ 
          if($("#my_display").text() === "someValue"){
             doSomething();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        相关资源
        最近更新 更多