I am facing one issue with respect to browser compatibility.
I get following error when I work with one of the form in my struts project.
EDIT:
public ActionForward execute(ActionMapping mapping,
ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
MemorialPrintForm form = (MemorialPrintForm) actionForm;
ActionErrors errors = new ActionErrors();
DbUserSession sessionUser = SessionHelpers.getUserSession(request);
DatabaseTransaction t = null;
fdms.ui.struts.form.EditVerseForm editVerse = null;
String submitType = form.getDirective();
logger.debug("ProcessMemorialPrint submit = "+submitType);
if (sessionUser == null) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.login.invalid"));
}
if (submitType.equals("cancel")) {
ActionForward actionForward = mapping.findForward("openCase");
return actionForward;
}
if ((submitType.equals("edit") || submitType.equals("copy") || submitType.equals("remove")) && (form.getVerse() == null || form.getVerse().trim().length() == 0)) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.tables.noselect"));
}
if (submitType.equals("print") && ((form.getFormat() == null || form.getFormat().trim().length() == 0) || (form.getVerse() == null || form.getVerse().trim().length() == 0))) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.tables.noselect"));
}
try {
t = (DatabaseTransaction)DatabaseTransaction.getTransaction(sessionUser);
if (!errors.isEmpty()) {
DbVitalsDeceased dbVitals = FdmsDb.getInstance().getVitalsDeceased(t, SessionHelpers.getVitalsIdFromSession(request, sessionUser));
DbMemorial[] dbMemorial = FdmsDb.getInstance().getMemorialSet(t, sessionUser.getRegion());
DbFormsAvailable[] dbFormsAvailable = FdmsDb.getInstance().getFormsAvailableForLocale(t, sessionUser.getRegion(), DbFormsAvailable.MEMORIAL_TYPE);
fdms.ui.struts.form.MemorialPrintForm memorialPrint = new fdms.ui.struts.form.MemorialPrintForm();
java.util.ArrayList formatList = new java.util.ArrayList();
java.util.ArrayList verseList = new java.util.ArrayList();
memorialPrint.setVitalsId(String.valueOf(dbVitals.getId()));
memorialPrint.setDeceasedFullName(dbVitals.getDecFullName());
if (memorialPrint.getDeceasedFullName() == null || memorialPrint.getDeceasedFullName().trim().length() == 0) {
memorialPrint.setDeceasedFullName(dbVitals.getDecFName() +" " +dbVitals.getDecMName() +" " +dbVitals.getDecLName());
}
//Populate the format List
for (int i=0; i < dbFormsAvailable.length; i++) {
String listValue = String.valueOf(dbFormsAvailable[i].getId());
String listLabel = dbFormsAvailable[i].getDescription();
formatList.add(new OptionsList(listValue, listLabel));
}
//Populate the Verse List
for (int i=0; i < dbMemorial.length; i++) {
String listValue = String.valueOf(dbMemorial[i].getId());
String listLabel = dbMemorial[i].getDescription();
verseList.add(new OptionsList(listValue, listLabel));
}
// Clean up
t.closeConnection();
request.setAttribute("memorialPrint", memorialPrint);
request.setAttribute("formatList", formatList);
request.setAttribute("verseList", verseList);
saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
editVerse = new fdms.ui.struts.form.EditVerseForm();
editVerse.setVitalsId(form.getVitalsId());
if (!form.getDirective().equals("add")) {
try {
DbMemorial dbMemorial = FdmsDb.getInstance().getMemorial(t, Integer.parseInt(form.getVerse()));
if (dbMemorial != null) {
if (submitType.equals("remove")) {
dbMemorial.remove();
t.addPersistent(dbMemorial);
t.save();
} else {
editVerse.setDescription(dbMemorial.getDescription());
if (form.getDirective().equals("edit")) {
editVerse.setMemorialId(String.valueOf(dbMemorial.getId()));
}
editVerse.setVitalsId(form.getVitalsId());
editVerse.setTextValue(dbMemorial.getVerse());
// Set form into request scope
request.setAttribute("editVerse", editVerse);
}
}
} catch (Exception e) {
}
}
} catch (PersistenceException pe) {
logger.error("Persistence Exception in ProcessMemorialPrint.doPerform. " + pe);
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.PersistenceException", pe.getCause()));
t.closeConnection();
} catch(Exception pe) {
logger.error("Exception in ProcessMemorialPrint.doPerform. ", pe);
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.GeneralException", pe.getMessage()));
t.closeConnection();
} finally {
if ( t != null ) {
t.closeConnection();
}
}
//Action Forward Logic
ActionForward actionForward = mapping.findForward("editVerse");
if (!errors.isEmpty()) {
//AppLog.info("ProcessMemorialPrint Invoking forward mapping getInput() ");
saveErrors(request, errors );
actionForward = new ActionForward(mapping.getInput());
}
if (submitType.equals("remove")) {
actionForward = mapping.findForward("showMemorialPrint");
}
//AppLog.trace("Leaving ProcessMemorialPrint.");
return actionForward;
}
Full Stack Trace:
2015-08-26 10:52:37,024 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/webfdms].[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: For input string: "chrome/"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
at java.lang.Double.parseDouble(Double.java:540)
at com.fredck.FCKeditor.FCKeditor.retrieveBrowserVersion(FCKeditor.java:264)
at com.fredck.FCKeditor.FCKeditor.isCompatible(FCKeditor.java:251)
at com.fredck.FCKeditor.FCKeditor.create(FCKeditor.java:292)
at com.fredck.FCKeditor.tags.FCKeditorTag.doAfterBody(FCKeditorTag.java:689)
at org.apache.jsp.EditVerse_jsp._jspService(EditVerse_jsp.java:258)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at fdms.ui.ActionTimmingFilter.doFilter(ActionTimmingFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at fdms.ui.SessionFilter.doFilter(SessionFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:745)
2015-08-26 10:52:37,028 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/webfdms].[WebFDMS]] Servlet.service() for servlet WebFDMS threw exception
java.lang.NumberFormatException: For input string: "chrome/"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
at java.lang.Double.parseDouble(Double.java:540)
at com.fredck.FCKeditor.FCKeditor.retrieveBrowserVersion(FCKeditor.java:264)
at com.fredck.FCKeditor.FCKeditor.isCompatible(FCKeditor.java:251)
at com.fredck.FCKeditor.FCKeditor.create(FCKeditor.java:292)
at com.fredck.FCKeditor.tags.FCKeditorTag.doAfterBody(FCKeditorTag.java:689)
at org.apache.jsp.EditVerse_jsp._jspService(EditVerse_jsp.java:258)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at fdms.ui.ActionTimmingFilter.doFilter(ActionTimmingFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at fdms.ui.SessionFilter.doFilter(SessionFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:745)
But the same thing worked out with Mozilla Firefox. What may be the issue? It seems to be a browser compatibility. Please help.
Thanks
It's a bug in the FCKEditor
library, which doesn't handle what Chrome returns properly.
You would need to either load a newer version where the bug has been fixed (if one exists), or extract the source code for the library and fix it yourself.
I recommend going to the Author's home page to see if you can find help there.