[
https://issues.apache.org/struts/browse/STR-3123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Niall Pemberton resolved STR-3123.
----------------------------------
Resolution: Not A Problem
Firstly this is a Commons Validator[1] issue, not a Struts one - since thats
where the validator DTD[2] lives.
Secondly this was fixed[3] in version 1.3.0 of the validator DTD - so if you
ugrade to Commons Validator 1.3.1[4] and use the 1.3.0 DTD it should resolve
your issue.
[1] http://commons.apache.org/validator/
[2]
http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/resources/org/apache/commons/validator/resources/
[3] https://issues.apache.org/jira/browse/VALIDATOR-77
[4] http://commons.apache.org/downloads/download_validator.cgi
> 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.