Form 为空的问题

weiyongzhi2005 2009-06-02 03:32:48
各位,本人是菜鸟,建了个工程测试struts登录,当点击subset时报空指针,哪位仁兄指点一下。
package com.isoftstone.Test.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;
public class LoginForm extends ValidatorForm {
private String userName;
private String password;
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println("--------LoginAcionForm.reset()--------");
}
/* (non-Javadoc)
* @see org.apache.struts.action.ActionForm#validate(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
*/
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("-----LoginAcitonForm.validate()");
// UserManager.getInstance().login(username, password);
return null;
}


public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}


下面是action
package com.isoftstone.Test.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.isoftstone.Test.dao.UserDAO;
import com.isoftstone.Test.form.LoginForm;

public class LoginAction extends Action{

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
LoginForm loginForm = (LoginForm)form;
System.out.println(loginForm.getUserName());
UserDAO dao = new UserDAO();
if(dao.check(loginForm.getUserName())){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}


这是jsp页面
<%@ page language="java" pageEncoding="gb2312"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>login.jsp</title>
</head>
<body>
<form action="/Test/login.do" method="post">
username:<input type=text name="userName" size="15"/><br>
password:<input type=password name="password" size="15"/><br>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>
</body>
</html:html>


...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiyongzhi2005 2009-06-02
  • 打赏
  • 举报
回复
错误找到了,是配置文件里的问题,是我手写的
应该是: <form-beans >
<form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/login.jsp"
name="LoginForm"
path="/login"
scope="request"
type="com.isoftstone.Test.action.LoginAction" >
手动写果然容易错,而且还不好找,建议大家以后重复的东西要拷贝,避免出错,浪费时间!还是要谢谢大家的!
wxwlion0425 2009-06-02
  • 打赏
  • 举报
回复
伙计,写代码的时候小心点,
你看看

这是你的form定义 <form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />


再看看你的引用
<action
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.isoftstone.Test.action.LoginAction" >

这你能取到值吗?
lvsh870228 2009-06-02
  • 打赏
  • 举报
回复
应该是validate方法它默认返回input字符串
所以你应该在.xml中配置
我不知道你出现的错误是不是这样?
dearjianggege 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wcsandoyq 的回复:]
引用 3 楼 nicai00 的回复:


请问 楼主这都是 自动生成的么 ;;;

<form-beans >
<form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.isoftst…
[/Quote]同上!楼主试试吧问题应该就出现在那!
wcsandoyq 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nicai00 的回复:]



请问 楼主这都是 自动生成的么 ;;;

<form-beans >
<form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.isoftstone.Test.action.LoginActi…
[/Quote]
formbean节点的name属性和action节点的name属性要大小写一致
nicai00 2009-06-02
  • 打赏
  • 举报
回复




请问 楼主这都是 自动生成的么 ;;;

<form-beans >
<form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.isoftstone.Test.action.LoginAction" >
中的 form-bean name="LoginForm"
action name="loginForm" 注意大小写了么 ;

我也很久 没用struts1.2了

wcsandoyq 2009-06-02
  • 打赏
  • 举报
回复
<form action="/Test/login.do" method="post">应该写成这样<form action="/login.do" method="post">,因为你的配置文件中的路径是path="/login",至于控制真是不是这个引起的,不能确定,最好有更详细的异常信息。
weiyongzhi2005 2009-06-02
  • 打赏
  • 举报
回复
还有配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
<form-beans >
<form-bean name="LoginForm" type="com.isoftstone.Test.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.isoftstone.Test.action.LoginAction" >
<forward name="success" path="/success.jsp" />
<forward name="error" path="/error.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.isoftstone.struts.ApplicationResources" />
</struts-config>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧