如何使用ajax部分处理纯JSF2表单?

时间:2016-12-30 09:21:05

标签: ajax forms jsf jsf-2 submit

NB 这个问题是关于纯JSF2的。我知道有第三方框架,如PrimeFaces,提供所需的功能。但我正在寻找纯JSF的解决方案。

在JSF内部<h:form>我有使用<ui:repeat>(!)呈现的块列表。每个块都有一个<h:commandLink>“提交此块”,它应该提交或处理该块的两个值 - 文本和单选按钮。

CommandLink看起来像这样:

<h:commandLink value = "Submit this block">
    <f:ajax
            listener="#{myFormBean.updateFormBlock(blockModel)}"
            event="click"
            render="@form"
            execute="@form" />
</h:commandLink>

约束:块,放在窗体内(红色矩形),我无法改变它。

问题即可。当我点击“提交此块”时,提交整个表单(块1和块2),我不希望这样。

有没有办法只提交块的字段?

form and 2 blocks

解决方案

对于应提交的每个组件 - 必须定义唯一的id属性。 NB!尽管组件位于ui:repeat块内,但'id'属性值不得包含任何rowIndex! (那是我的错)。 id的纯静态文本(jsf足够聪明 - 它将弄清楚如何查找组件)。应在f:ajax属性executerender中定义相同的ID值(以空格分隔)(有关详细信息,请参阅linked topic),而不是“@form”。

示例

如果编辑组件(文本“第1部分”)有id =“myEdit”而单选按钮有id =“myRadio” - 则提交按钮可能如下所示:

<h:commandLink value = "Submit this block">
<f:ajax
        listener="#{myFormBean.updateFormBlock(blockModel)}"
        event="click"
        render="@form"
        execute="myEdit myRadio" /> </h:commandLink>

0 个答案:

没有答案