struts中传递request参数的问题,急!

settle 2006-04-19 01:48:50
刚刚接触jsp和struts,自己做了一个非常简单的例子,struts能够正常转到指定页面,但是输入表单里面的参数没有传递成功,怎么着都是null。请帮我看看是在哪里出了问题。
主要文件内容如下:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

===========
struts-config.xml:
<?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 Source Configuration =============================== -->
<data-sources />

<!-- ========== Form Bean Definitions ================================== -->
<form-beans>
<form-bean name="testForm" type="com.youcompany.struts.form.TestForm" />
</form-beans>

<!-- ========== Global Exception Definitions ============================== -->
<global-exceptions />

<!-- ========== Global Forward Definitions =============================== -->
<global-forwards />

<!-- ========== Action Mapping Definitions =============================== -->
<action-mappings>
<action
attribute="testForm"
input="/test.jsp"
name="testForm"
path="/test"
type="com.youcompany.struts.action.TestAction"
validate="false">
<forward name="ok" path="/ok.jsp" />
</action>
</action-mappings>

<!-- ========== Controller Configuration ================================ -->
<controller />

<!-- ========== Message Resources Definitions ============================ -->
<message-resources parameter="com.youcompany.struts.ApplicationResources" />

<!-- ========== Plug Ins Configuration ================================= -->
</struts-config>

==========
test.jsp:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html>
<head>
<meta name = "Generator" content = "Easy Struts Xslt generator for Eclipse (http://easystruts.sf.net).">

<title>Struts Form for testForm</title>
</head>
<body>
<form action="test.do">
<input type="text" name="p1" value="" />
<input type="submit" value="submit" />
</form>
<body>
</html>
=========
ok.jsp:
<p>
test!!!
</p>

<% out.println(request.getAttribute("p1"));%>
==============
TestForm.java:

// Created by Xslt generator for Eclipse.
// XSL : not found (java.io.FileNotFoundException: (系统找不到指定的路径。))
// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

package com.youcompany.struts.form;

import javax.servlet.http.HttpServletRequest;

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

/**
* TestForm.java created by EasyStruts - XsltGen.
* http://easystruts.sf.net
* created on 04-19-2006
*
* XDoclet definition:
* @struts:form name="testForm"
*/
public class TestForm extends ActionForm {

// --------------------------------------------------------- Instance Variables

String p1;

// --------------------------------------------------------- Methods

/**
* Method reset
* @param ActionMapping mapping
* @param HttpServletRequest request
*/

public String getP1(){
return p1;
}
public void setP1(String p1){
this.p1=p1;
}

public void reset(ActionMapping mapping, HttpServletRequest request) {

}

}
=========
testAction.java:

// Created by Xslt generator for Eclipse.
// XSL : not found (java.io.FileNotFoundException: (系统找不到指定的路径。))
// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

package com.youcompany.struts.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.youcompany.struts.form.TestForm;

/**
* TestAction.java created by EasyStruts - XsltGen.
* http://easystruts.sf.net
* created on 04-19-2006
*
* XDoclet definition:
* @struts:action path="/test" name="testForm" input="/test.jsp"
* @struts:action-forward name="/ok.jsp" path="/ok.jsp"
*/
public class TestAction extends Action {

// --------------------------------------------------------- Instance Variables

// --------------------------------------------------------- Methods

/**
* Method execute
* @param ActionMapping mapping
* @param ActionForm form
* @param HttpServletRequest request
* @param HttpServletResponse response
* @return ActionForward
* @throws Exception
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
TestForm testForm = (TestForm) form;

String result=testForm.getP1();
request.setAttribute("p1",result);
//System.out.println(result);

return(mapping.findForward("ok"));

//throw new UnsupportedOperationException("Generated method 'execute(...)' not implemented.");
}

}
=========
开发环境是eclipse2.1+tomcat5.0.29+easystruts.

运行结果显示
test!!!

null
...全文
171 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
EchoEverything 2006-04-20
你没有设置自动加载class文件,晕啊!
  • 打赏
  • 举报
回复
settle 2006-04-20
其实是eclipse没有自动编译的问题,我重启tomcat后就好了。
不好意思了,此贴就此结束,因为没人说对,所以不能给大家加分了。
但是还是谢谢大家的帮助!
  • 打赏
  • 举报
回复
stckiss 2006-04-19
session看看,存到会话中,看取得出来吧
  • 打赏
  • 举报
回复
zhh1981 2006-04-19
<form action="test.do">改为<form action="/test.do">
另外你用<html:form>等等这样的标签改写你的页面看看
  • 打赏
  • 举报
回复
settle 2006-04-19
才想起来null是没有该对象,也就是说我在testAction中写的request.setAttribute("p1",result);根本没起作用。
to imA:eclipse根本不让在testAction.java中加入你的那个语句。
  • 打赏
  • 举报
回复
settle 2006-04-19
我感觉有两个可能存在问题的地方:
1.test.jsp文件中form的action属性写法可能有问题,我看到有的人用类似/test这样的写法,但是我这么写却不对,写成/test.do也不对。

2.我在eclipse中把testAction.java中的String result=testForm.getP1();改成String result="jkkjd";存盘后重新访问还是显示null,是不是eclipse没有对我改后的testAction.java进行重新编译?(eclipse2.1的菜单中我也没找到关于自动编译的选项),让我手工编译我又不会(主要是因为要import testForm类),郁闷!
另外我jsp的语法不熟,请帮我看看有没有写错的地方。bow!
  • 打赏
  • 举报
回复
settle 2006-04-19
to 小E,按照你的方法试了一下,输出和以前一样,没有抛出异常出来。
  • 打赏
  • 举报
回复
EchoEverything 2006-04-19
我感觉是没有set到actionForm里面
你这样,把actionForm里面得p1赋上初始值:p1="empty";
再试试看!

另外看你的Tomcat有没有抛异常出来!
  • 打赏
  • 举报
回复
imA 2006-04-19
在action中用request.getParmeter("p1");看看,肯定有值。
  • 打赏
  • 举报
回复
imA 2006-04-19
你的formbean中有p1属性?

  • 打赏
  • 举报
回复
SDMRauquin 2006-04-19
<body>
<form action="test.do">
<input type="text" name="p1" value="" />
<input type="submit" value="submit" />
</form>
<body>

是不是value="" 里面都没有值。没有传 所以没有结果吧
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2006-04-19 01:48
社区公告
暂无公告