formbean属性名与也面上的html对象没对应上

解决方案 »

  1.   

    原因太多了,最好把页面的,<form  。>标签,以及struts-config.xml中相关的配置文件贴出来。
      

  2.   

    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><html> 
     <head>
      <title>Register</title>
     </head>
     <body>
    <html:form action="register">
    <br>
    UserName:  <html:text property="userName"/> <br>
    <br>enter password:  <html:password property="password"/> <br>
    <br>re-enter password:  <html:password property="confirmPassword"/> <br>
      <html:hidden property="do" value="register" /> 
        
    <html:submit>Save</html:submit></html:form>
     </body>
    </html><?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
       <data-sources />
       <form-beans >
          <form-bean name="registerForm" type="cn.weixin.struts.form.RegisterForm" />   </form-beans>   <global-exceptions />
       <global-forwards />
       <action-mappings >
          <action
             attribute="registerForm"
             name="registerForm"
             parameter="do"
             path="/register"
             scope="request"
             type="cn.weixin.struts.action.RegisterAction">
             <forward
                name="success"
                path="/jsp/success.jsp"
                redirect="true" />
             <forward
                name="fail"
                path="/jsp/fail.jsp"
                redirect="true" />
          </action>   </action-mappings>   <message-resources parameter="cn.weixin.struts.ApplicationResources" />
    </struts-config>public class RegisterForm extends ActionForm {    private Register register = new Register();
        
        public Register getRegister()
        {
            return this.register;
        }
        
        public String getUserName()
        {
            return register.getUserName();
        }
        
        public String getPassword()
        {
            return register.getPassword();
        }
        
        public String getConfirmPassword()
        {
            return register.getConfirmPassword();
        }
        }
    請大家給看看,謝了
      

  3.   

    你的名称的大小写有关吗?象userName,password,confirmPassword这是网页中的名称,而实现tagLib中的名称却是UserName,Password,ConfirmPassword,不知道是不是这方面的原因?其实我不懂,但我觉得Java中的大小写是很敏感的.
      

  4.   

    <html:form action="register">
    改成<html:form action="/register">
      

  5.   

    最好把"<html>"也写成"<html:html>",曾经碰到过这样的错误
      

  6.   

    谢谢大家了,上面的问题解决了,原因是form中没有写set方法
    现在有一个问题,当文本框没有输入时,form总是不能得到null,不知何故?
    我的tomcat启动时,总是抛出下面的异常,请大家指点
    严重: Parse Error at line 2 column 221: Document root element "web-app", must match DOCTYPE root "null".
    org.xml.sax.SAXParseException: Document root element "web-app", must match DOCTYPE root "null".
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.commons.digester.Digester.parse(Digester.java:1548)
    at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:282)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:639)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3568)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
    at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:307)
    at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:559)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:401)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:718)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
    at org.apache.catalina.core.StandardService.start(StandardService.java:497)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
    at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
    at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
    2005-11-14 21:22:28 org.apache.commons.digester.Digester error
    严重: Parse Error at line 2 column 221: Document is invalid: no grammar found.
    org.xml.sax.SAXParseException: Document is invalid: no grammar found.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.commons.digester.Digester.parse(Digester.java:1548)
    at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:282)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:639)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3568)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
    at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:307)
    at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:559)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:401)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:718)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
    at org.apache.catalina.core.StandardService.start(StandardService.java:497)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
    at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
    at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
      

  7.   

    一楼说得对,页面中的属性和form中的属性大小写一致。
    二楼说得也对,还不行的话不妨换成action="/register.do"试试
    form中的每个属性都要定义get和set方法,因为在提交的时候struts会自动调用set方法。
      

  8.   

    为什么要得到NULL值呢?
    你可以在未输入信息前进行验证啊。
      

  9.   

    我没有作页面上的检查,当页面没有输入时,action得到的不是null,也不是空字符串