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.