You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Dmitry Bedrin (JIRA)" <ji...@apache.org> on 2007/12/13 15:02:34 UTC
[jira] Created: (STR-3123) Empty form tags are prohibited in
validation xml document, while it's reasonable when extending from other
form
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.
[jira] Resolved: (STR-3123) Empty form tags are prohibited in
validation xml document, while it's reasonable when extending from other
form
Posted by "Niall Pemberton (JIRA)" <ji...@apache.org>.
[ 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.