<a4j:命令链接> 操作未在内部<form>触发



我正在做一个增强项目。有一个父元素<form>。在这个父表单中包含了一个XHTML文件。所包含的XHTML文件有一个<a4j:commandLink>。这个动作没有被调用。现在,如果我将<a4j:commandLink>包裹在<h:form>中,这将起作用。这样,父表单的操作和<a4j:commandLink>的操作都被调用。但是不鼓励嵌套表单。我不能使用父表单的操作,因为它会转到servlet,而我的操作在请求作用域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>

RichFaces组件必须在表单内,否则它们将无法工作(至少是可执行的)。

现在,<a4j:commandLink>(和commandButton)执行整个表单是默认行为,要改变它使用execute属性:

<a4j:commandLink execute="@this" … >

这将限制仅对链接执行

应该不行。不要嵌套表单,因为它一般在HTML中是不合法的,特别是在JSF呈现的HTML代码中。因此,您的代码中有以下结构:

<form>
    ...
    <h:form>
        ...
    </h:form>
    ...
</form>

去掉它,它会像预期的那样工作,即通过创建一个普通的form-to-form结构。

最新更新