使用按钮或链接填充数据

时间:2017-05-14 15:24:30

标签: jsf primefaces

我有一个bean动作,它将根据给定的字段数据设置值

public void fillSample(final String sin) {
    setParticipantSinInput(sin);
    participant.setEmail(sin + "@example.com");
    participant.setName("Archie " + sin);
    setGenderAtBirthInput(Gender.MALE);
}

我想使用页面上的按钮/链接触发它但我不希望它验证输入。目前我在日志中得到以下内容

[WARNING ] There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
These unhandled FacesMessages are: 
- Social Insurance Number: Validation Error: Value is required.
- Name: Validation Error: Value is required.
- Gender at birth: Validation Error: Value is required.
- E-mail: Validation Error: Value is required.

或者日志中没有显示任何内容但数据字段未填充。或者出现验证。

到目前为止,我已尝试过以下内容

<p:commandLink value="fill" action="#{participantBean.fillSample(participantBean.generatedSin)}" 
update="@form"/>

<p:commandLink value="fill" action="#{participantBean.fillSample(participantBean.generatedSin)}" 
immediate="true" update="@form"/>

<p:commandLink value="fill" action="#{participantBean.fillSample(participantBean.generatedSin)}" 
immediate="true" update="@all"/>

<p:commandButton value="fill" action="#{participantBean.fillSample(participantBean.generatedSin)}" 
immediate="true" update="@form"/>

1 个答案:

答案 0 :(得分:0)

这种组合起作用

<p:commandLink value="fill" 
  action="#{participantBean.fillSample(participantBean.generatedSin)}"
  update="@form" process="@this">
  <p:resetInput target="@form" />
</p:commandLink>

因此它会更新当前表单并且只处理@this,我猜这是按钮,因此它不会在整个表单上执行验证。

此外,如果表单处于无效状态,则需要resetInput