【问题标题】:Use value from backing bean in javascript在 javascript 中使用来自支持 bean 的值
【发布时间】:2011-12-01 09:46:07
【问题描述】:

我想要的是在我的 javascript 中使用 applicationContext.properties(Jboss 配置文件)中的布尔值。

目前我使用 Spring 将 applicationContext.properties 中配置的值注入我的 backingbean。 然后我像这样在我的jsp中输入一个输出文本

<h:outputText id="idValue" styleClass="foo" value="" rendered="#{bean.isRendered}"/>

在我的 JavaScript 中,我尝试关注

  jQuery(function(){
     bRedirect = jQuery(".foo").value != undefined;
     ...

这一切对我来说看起来太糟糕了,尽管它工作正常。一定有比我做的更聪明的方法。

请注意,我正在运行 JSF1.2,因此必须使用 jQuery 而不是 $,并且还可以按唯一类 (foo) 而不是按 id 进行选择,这也可能是不好的做法。

提前谢谢你。阿方

【问题讨论】:

  • 您说必须按班级选择,但您的示例是按ID选择?就实践而言,您的示例很好。按班级选择是一种完全合法的做法。
  • 我的错。想使用类选择器。编辑有问题
  • @RoryMcCrossan 我主要提到我必须按类进行选择,因为我希望得到引导我使用 id 选择的答案,因为性能优势。见Improve jQuery
  • 关于通过 ID 选择 JSF 元素:stackoverflow.com/a/7928290/157882

标签: jquery spring jsf


【解决方案1】:

假设在渲染部分时调用该函数,您可以将函数调用嵌入到模板中:

<script type="text/javascript">
  myFunction("#{springExpressionForBooleanValue}")
</script>

并且 myFunction 定义驻留在不被 JSF 处理的 .js 文件中。我不明白为什么在这种情况下你不能使用 $ 来处理 jQuery 对象。

如果由于某些交互而调用该函数,您可以将其作为 JSF 组件的 onclick/oblur 等属性的一部分。

您也可以将整个函数嵌入到脚本标记中,但我认为最好将 JavaScript 逻辑与模板分开。

【讨论】:

  • 每当我尝试这样的事情时,我都会得到“PWC6228: #{...} not allowed in a template text body”。顺便说一句,我的函数应该在 dom 就绪时调用
  • @AlfonsSocken 看看这里:stackoverflow.com/questions/8213620/…
【解决方案2】:

在我解决问题几周后,我今天遇到了 t:jsValueSet。

就我而言,这将是解决上述问题的最佳方式。 您可以按如下方式使用它:

<t:jsValueSet name="test" value="#{myBean.myInfoText}"/>

在您的 javaScript 中,您现在可以访问名为 test 的新变量:

 <script type="text/javascript">
   alert (test);
 </script>

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2013-02-04
    • 2018-11-15
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多