Empty form tags are prohibited in validation xml document, while it's
reasonable when extending from other form
---------------------------------------------------------------------------------------------------------------
Key: STR-3123
URL: https://issues.apache.org/struts/browse/STR-3123
Project: Struts 1
Issue Type: Bug
Affects Versions: 1.2.9
Environment: MS Windows XP, Java 5, Weblogic 9
Reporter: Dmitry Bedrin
Priority: Minor
Empty form tags are prohibited in validation xml document.
Consider following fragment of validation.xml:
<form name="emailTemplateDetailsForm">
<field property="templateName" depends="required,maxlength">
<msg name="required" key="message.10.mandatory"/>
<msg name="maxlength" key="validation.length.max"/>
<arg position="0" key="emailTemplateDetailsForm.templateName"/>
<arg position="1" key="${var:maxlength}" resource="false"/>
<arg position="0" name="required" key="Template Name" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>50</var-value>
</var>
</field>
<field property="subject" depends="required,maxlength">
<msg name="required" key="message.10.mandatory"/>
<msg name="maxlength" key="validation.length.max"/>
<arg position="0" key="emailTemplateDetailsForm.templateSubject"/>
<arg position="1" key="${var:maxlength}" resource="false"/>
<arg position="0" name="required" key="Subject" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>200</var-value>
</var>
</field>
<field property="body" depends="required,textPresentInHtml">
<msg name="required" key="message.10.mandatory"/>
<msg name="textPresentInHtml" key="message.10.mandatory"/>
<arg position="0" key="emailTemplateDetailsForm.body"/>
<arg position="0" name="required" key="Template Body" resource="false"/>
</field>
</form>
<form name="generalEmailTemplateDetailsForm"
extends="emailTemplateDetailsForm"/>
When Struts is initializing, following error is reported to log:
Parse Error at line 153 column 40: The content of element type "form" is
incomplete, it must match "(field)+".
org.xml.sax.SAXParseException: The content of element type "form" is
incomplete, it must match "(field)+".
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2048)
at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:822)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:322)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
at org.apache.commons.digester.Digester.parse(Digester.java:1591)
at
org.apache.commons.validator.ValidatorResources.<init>(ValidatorResources.java:156)
at
org.apache.struts.validator.ValidatorPlugIn.initResources(ValidatorPlugIn.java:237)
at
org.apache.struts.validator.ValidatorPlugIn.init(ValidatorPlugIn.java:162)
at
org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:350)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at
weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:276)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at
weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:68)
at
weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
at
weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
at
weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:493)
at
weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1688)
at
weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1665)
at
weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1585)
at
weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2678)
at
weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:874)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:326)
at
weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:114)
at
weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
at
weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:25)
at
weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:640)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at
weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:252)
at
weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:154)
at
weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at
weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:176)
at
weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:347)
at
weblogic.management.deploy.internal.DeploymentAdapter$1.activate(DeploymentAdapter.java:50)
at
weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
at
weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:253)
at
weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:238)
at
weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:168)
at
weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
at
weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
at
weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at
weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
I don't want to add any new validation rules to my child form
'generalEmailTemplateDetailsForm' - only adding some new fields.
However strtus doesn't allow to have empty form tags
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.