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