我有一个Facelets视图如下:
<h:form id="f1">
<p:panelGrid id="p1" columns="2">
<p: inputText value="Distance Travelled::/><p:inputText value="#{airTransportUsage.distance}" immediate="true"
required="true" requiredMessage="Distance Travelled Field cannot be left blank.."
converterMessage="Distance Travelled must be a number"
validatorMessage="Distance Travelled must be a valid number.."
id="dis">
<f:validateLongRange minimum="1"/>
</p:inputText>
<p:commandButton value="Reset" action="#{airTransportUsage.reset}" update=":f1:p1" />
</p:panelGrid>
</h:form>
Run Code Online (Sandbox Code Playgroud)
单击重置按钮时,由于验证,永远不会执行相应的方法.我无法使用immediate="true"
我的重置按钮,因为它会产生一些其他问题.
这是我的注销方法:
public String logout() throws IOException, ServletException
{
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext ec = context.getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
HttpServletResponse response = (HttpServletResponse) ec.getResponse();
final HttpServletRequest request = (HttpServletRequest)ec.getRequest();
session.invalidate();
Cookie[] cookies = request.getCookies();
Cookie opentoken = null;
for(Cookie c : cookies){
if (c.getName().equals("opentoken")){
if (session != null){
opentoken = c;
opentoken.setMaxAge(0);
opentoken.setValue("");
response.addCookie(opentoken);
response.sendRedirect(request.getContextPath());
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Cache-Control", "must-revalidate");
response.setHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT");//past date
}
break;
}
}
context.getExternalContext().getSessionMap().remove("#{LogoutBean}");
return "login.xhtml?faces-redirect=false"; …
Run Code Online (Sandbox Code Playgroud) 我有一个代码如下:
<p:commandButton value="#{actualProductionEntry.val}" onclick="confirmation.show()"/>
<p:confirmDialog id="confirmDialog" message="Are you sure?" header="Confirm Submission" severity="alert" widgetVar="confirmation">
<p:commandButton id="confirm" value="Yes" oncomplete="confirmation.hide()" action="# {actualProductionEntry.insert(login.userid,login.uid,login.dname,login.rptid)}" update=":df:data :f1:p2 :dp:app"/>
<p:commandButton id="decline" value="No" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
Run Code Online (Sandbox Code Playgroud)
现在,如何在确认之前进行验证而不影响我的bean?