我正在开发一个增强项目。有一个父<form>
元素。我在此父表单中包含一个XHTML文件。包含的XHTML文件具有<a4j:commandLink>
。此操作未被调用。
现在,如果我将<a4j:commandLink>
包裹在<h:form>
内,这将有效。这样,调用父表单的操作以及<a4j:commandLink>
的操作。但不鼓励嵌套表格。
我无法使用父窗体的操作,因为它转到servlet并且我的操作位于
请求scoped bean。我无法访问servlet中的bean。
任何有关如何在没有<h:form>
的情况下进行操作调用的帮助都非常感谢。
这是它的样子:
<form id="parentFormId" name="parentFormId" action="aservletaction">
<a4j:outputPanel id="includedRegion">
<ui:include src="setupView.xhtml"></ui:include>
</a4j:outputPanel>
</form>
setupView.xhtml的内容:
<ui:composition>
<a4j:outputPanel>
<h:form>
<a4j:commandLink action="#{myBean.actionMethod}"
render="adatatableid" limitRender="true"/>
</h:form>
</ui:composition>
答案 0 :(得分:2)
RichFaces组件必须位于表单内,否则它们将无法工作(至少是可执行的组件)。
现在,执行整个表单的<a4j:commandLink>
(和commandButton)是默认行为,要使用execute
attribute更改它:
<a4j:commandLink execute="@this" … >
这会将执行仅限于链接。
答案 1 :(得分:1)
它应该不起作用。 不要嵌套表单,因为它在HTML中一般不合法,特别是在JSF 呈现的HTML代码中。所以,你的代码中有一个以下构造:
<form>
...
<h:form>
...
</h:form>
...
</form>
摆脱它是否会按预期工作,即通过创建一个简单的表单到表单结构。