我有一个@ViewScoped
@ManagedBean
创建唯一 ID 的。此 ID 以如下形式呈现:
<h:form>
<h:outputText value="#{myBean.uid}" id="uid"/>
<h:hiddenInput value="#{myBean.uid}" id="hiddenId" />
....
<p:commandButton actionListener="#{myBean.create}" ajax="true" update="@form" value="Create" />
</h:form>
到目前为止,一切都很好。在第一次请求时,页面会正确呈现。提交表单后,如果验证失败,outputText
则为空,但隐藏的输入字段保留其变量。任何线索我必须做些什么来防止这种行为并让其outputText
保持其状态?我意识到 bean 似乎在每个 ajax 请求之后被初始化。但是,为什么隐藏的输入字段会保留旧变量?
这是我的bean的相关代码:
@ManagedBean(name = "myBean", eager = true)
@Stateful
@Model
@ViewScoped
public class MyBean implements Serializable {
...
private String uid;
...
@PostConstruct
public void initWithData() {
this.uid = UUID.randomUUID().toString();
}
}