0

我正在尝试在我的一个 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> 

请记住,此按钮也由 ah: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 初始化功能的新插件。

4

1 回答 1

2

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


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

于 2012-05-15T13:51:49.930 回答