Catch the Excep while clicking on a button and display the msg in JSF UI
843844Oct 1 2007 — edited Oct 3 2007Hi,
I am facing a issue like i have a add button in my JSF page which will add Partner code, Partner name,etc..,
If i give the same partner code and partner name second time it is throwing the duplicate key exception
org.apache.myfaces.component.html.ext.HtmlSelectOneMenu@319e5b
Calling Save Method.............
Record Saved..............
(util.JDBCExceptionReporter 71 ) SQL Error: 1062, SQLState: 23000
(util.JDBCExceptionReporter 72 ) Duplicate entry 'T1-test1' for key 1
(def.AbstractFlushingEventListener 299 ) Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:296)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1007)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:354)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:496)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:469)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:266)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy31.save(Unknown Source)
at com.finnair.pba.handler.PartnerMastCtrl.addAction(PartnerMastCtrl.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:346)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.BatchUpdateException: Duplicate entry 'T1-test1' for key 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:647)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
... 51 more
I am using JSF,Spring and Hibernate.
I would like to catch this exception and throw it in the JSF UI near partner code field as a message.
Is this possible to do.
My JSF:
<tr>
<td width="30%" align="right" ><b><h:outputText id="pPartnerCode" value="Partner Code" /></b><span style="color:red">*</span></td>
<td width="60%">:
<h:inputText id="partnerCode" value="#{partnerMast.partnerCode}" required="true">
<t:validateRegExpr pattern="^[a-z||A-Z||0-9||_||\s||/]+$" />
<f:validateLength minimum="1" maximum="3" />
</h:inputText>
<h:message for="partnerCode" showDetail="true" style="color:red" /></td>
</tr>
<tr>
<td width="40%" align="right"><b><h:outputText id="pPartnerName" value="Partner Name" /><span style="color:red">*</span></b></td>
<td width="60%" align="left">:
<h:inputText id="partnerName" value="#{partnerMast.partnerName}" required="true" >
<t:validateRegExpr pattern="^[a-z||A-Z||0-9||_||\s||/]+$" />
<f:validateLength minimum="1" maximum="50"/>
</h:inputText>
<h:message for="partnerName" showDetail="true" style="color:red" />
</td>
</tr>
.
.
<h:commandButton id="addUser" value="Save" action="#{partnerMastCtrl.addAction}" styleClass="style10"/>
My controller:
public String addAction()
{
try
{
partnerMast = (PartnerMast)context.getExternalContext().getSessionMap().get("partnerMast");
partnerHostingMast = (PartnerHostingMast) context.getExternalContext().getSessionMap().get("partnerHostingMast");
this.getService();
if(partnerHostingMast != null && partnerHostingMast.getHostingPartner() != null && partnerMast.getPartnerType().equalsIgnoreCase("Airline"))
{
partnerHostingMast.setPartnerCode(partnerMast.getPartnerCode());
partnerMastService.save(partnerMast); /* To be noted */
partnerHostingMastService.saveOrUpdate(partnerHostingMast);
ret_stat = "Success";
context.getExternalContext().getSessionMap().put("partnerMast", null);
} else {
partnerMastService.save(partnerMast);
ret_stat = "Success";
}
}catch(Exception e){
ret_stat = "Error";
FacesMessage message = new FacesMessage("Application facing some problem - Please contact administrator");
context.addMessage("error", message);
}
return ret_stat;
}
My Dao :
public PartnerMast save(PartnerMast entity){
try{
System.out.println("Calling Save Method.............");
entity.setIsActive("Y");
getHibernateTemplate().save(entity);
System.out.println("Record Saved..............");
}
catch(ConstraintViolationException e){
System.out.println("Exception ..................."+e);
}
return entity;
}
I hope u got my question. Is there is any solution for this.
Pls Anyone help me out.
Thanks,
Ambika☺