我刚刚更改了用户输入数据的方式,从使用<h:
到<:p
来自primefaces库,现在当数据已成功添加到数据库时,它不再自动获取数据用户关联页面。我所做的唯一更改是使用以下代码输入数据:
<h:messages showDetail="true" />
<h:outputText value="Enter Name : " />
<h:inputText value="#{user.name}" />
<br></br>
<h:outputText value="Enter email address : "/>
<h:inputText id="email" value="#{user.email}"
size="20" required="true" label="Email Address">
<f:validator validatorId="richard.test.EmailValidator" />
</h:inputText>
<br></br>
<h:outputText value="Enter your address : "/>
<h:inputText value="#{user.address}" />
<br></br>
<h:outputText value="Enter Created Date : "/>
<h:inputText value="#{user.created_date}">
<f:convertDateTime pattern="yyyy-MM-dd"/>
</h:inputText>
<br></br>
<br></br>
<h:message for="email" style="color:red" />
<h:commandButton value="Insert" action="#{user.add}"/>
如果我运行代码而不是下面的代码,上面的代码仍然有用:
<h:form>
<p:growl id="growl" showDetail="true" sticky="true" />
<p:panel header="Growl">
<h:panelGrid columns="2">
<h:outputText value="Enter Name : " />
<h:inputText value="#{user.name}" required="true" />
<h:outputText value="Enter email address : " />
<h:inputText id="email" value="#{user.email}" size="20" required="true" label="Email Address">
<f:validator validatorId="richard.test.EmailValidator" />
</h:inputText>
<h:outputText value="Enter your address : " />
<h:inputText value="#{user.address}" />
<h:outputText value="Enter Created Date : " />
<h:inputText value="#{user.created_date}">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
</h:panelGrid>
<p:commandButton value="Save" actionListener="#{user.add}" update="growl" />
</p:panel>
</h:form>
<h:form>
<h:messages showDetail="true" />
</h:form>
改变背后的原因是为了更好地了解用户,但是虽然它看起来很专业并且将所有数据添加到数据库但它不再将用户发送到页面成功等,尽管{{1}文件没有改变。唯一的变化是使用primefaces。导致这种情况的原因是,是否有成功输入数据的方法可以将用户带到正确的页面?
感谢。
答案 0 :(得分:2)
你的p:commandButton在你的第一个例子中调用user.add
作为actionListener而不是像h:commandButton那样的动作。只需切换到操作,这应该会导致您希望它拥有的行为。
答案 1 :(得分:0)
如果您想在actionListener
到<p:commandButton>
中使用JSF的隐式导航更改action
- 属性。就是这样。