【问题标题】:Javascript in JSF - "body onload=" vs </redirect> tagJSF 中的 Javascript - “body onload=" vs </redirect> 标签
【发布时间】:2012-05-15 13:03:05
【问题描述】:

我正在尝试在我的一个 JSF 页面上使用 javascript。不幸的是

<h:body onload="init('#{formBean.arrayAsString}')"> 

根本没有被调用。我发现如果我在导航到页面的导航案例中添加 /redirect 标记,该功能将加载。不幸的是,这会导致另一个问题,因为导航时我还传递了重要的 f:param 以便 formBean 可以读取它。如果我使用 /redirect 标记,则参数值不再可供读取。

如何在不使用重定向标签的情况下加载 javascript init 函数?或者也许我可以通过重定向以某种方式传递 f:param 值,但据我所知这是不可能的......

我下面贴出导航方法:

第一个 .xhtml 页面:

<h:selectOneMenu id="selectMenu" value="#{indexBean.name_id}">
    <f:selectItems value="#{indexBean.myModelValues}" />    
    <f:ajax event="valueChange" render="button" execute="@this"/>       
</h:selectOneMenu>
                <h:commandButton id="button" value="Go to form Browse" action="form">
                  <f:param name="name" value="#{indexBean.name_id}" />                                       
                </h:commandButton> 

请记住,此按钮也由 h:selectOneMenu 的 ajax 事件重新呈现以传递所选值。

还有导航案例:

 <navigation-rule>
        <from-view-id>/index.xhtml</from-view-id>
        <navigation-case>   
            <from-outcome>
                form
            </from-outcome>
            <to-view-id>
                /form.xhtml
            </to-view-id>
            <redirect/>
        </navigation-case>
        </navigation-rule>

重定向标签是一个启用 JavaScript 初始化功能的新插件。

【问题讨论】:

  • 您的代码中有“
  • 是没有空格的h:body。
  • 您的导航如何?在 faces-config.xml 中使用导航规则?或在操作方法中返回一个字符串?还是使用 commandButton/commandLink 动作属性?

标签: javascript jsf-2 onload param


【解决方案1】:

如果操作由 ajax 调用,就会发生这种情况。使其成为非 ajax 操作。


更新:根据您的问题更新,将 &lt;a4j:commandButton&gt; 替换为 &lt;h:commandButton&gt; 以使其成为非 ajax 操作。顺便说一句,在 JSF 2 中,如果 from 结果已经等于 to view ID,则不再需要导航案例。删除整个&lt;navigation-rule&gt;,你不需要它。

【讨论】:

  • 我需要改变一些其他的东西,但它可以工作 - 像往常一样感谢 BalusC - 大力支持。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
相关资源
最近更新 更多