2

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

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

2 回答 2

4

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

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

在 webbrowser 中打开 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.displayJS 对象语法,请执行以下操作:

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

$(document).ready(function(){ 
    if(bean.display){
       doSomething();
    }
}
于 2013-09-12T18:38:32.910 回答
1

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

例如:

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

并像这样使用它:

$(document).ready(function(){ 
    if($("#my_display").text() === "someValue"){
       doSomething();
    }
}
于 2013-09-12T18:41:16.260 回答