从jquery访问bean属性

时间:2013-09-12 18:33:26

标签: jquery jsf jsf-2

假设我有一个名为display的boolean属性的bean。有什么办法可以从jquery访问该属性的值吗?像

这样的东西
$(document).ready(function(){ 
    if(bean.display){
       doSomething();
    }
}

2 个答案:

答案 0 :(得分:3)

在这个问题的上下文中,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.display JS对象语法,请执行以下操作:

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

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

答案 1 :(得分:1)

您还可以将其存储在某些outputTextinputText

例如:

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

并像这样使用它:

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