我正在尝试在我的一个JSF页面上使用javascript。不幸的是
<h:body onload="init('#{formBean.arrayAsString}')">
根本没有被召唤。我发现如果我在导航到导航到页面的导航情况下添加/重定向标记,则该函数将加载。不幸的是,这导致了另一个问题,因为导航我也传递了重要的f:param,因此formBean可以读取它。如果我使用/ redirect标签,则param值不再可用于读取。
如何在不使用重定向标记的情况下加载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 init函数。
答案 0 :(得分:2)
如果ajax调用了该操作,则会发生这种情况。使它成为非ajax行动。
更新:根据您的问题更新,将<a4j:commandButton>
替换为<h:commandButton>
,使其成为非ajax操作。顺便说一句,在JSF 2中,如果from结果已经等于视图ID,则不再需要导航案例。删除整个<navigation-rule>
,您不需要它。