[ 
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.

Reply via email to