Struts2无法提交表单

救生圈 2012-11-04 04:30:48
struts配置文件如下:

<action name="loginAction" class="com.tfsp.action.LoginAction" method="login">
<result >/studentList.jsp</result>
<result name="error">/error.jsp</result>
</action>
action文件:
package com.tfsp.action;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import com.opensymphony.xwork2.ActionSupport;
import com.tfsp.model.Student;
import com.tfsp.service.StudentService;
public class LoginAction extends ActionSupport implements RequestAware{
/**
*
*/
private static final long serialVersionUID = 3710092016528490037L;
private StudentService studentService;
private Student student;
//对应HttpRequest作用域,由RequestAware注入
private Map request;
public String login(){
boolean b = studentService.login(student);
if(b){
List<Student> studentList = studentService.getAllStudent();
request.put("studentList", studentList);
return SUCCESS;
}else{
return "error";
}

}


public StudentService getStudentService() {
return studentService;
}
public void setStudentService(StudentService studentService) {
this.studentService = studentService;
}
/**
* @return the student
*/
public Student getStudent() {
return student;
}
/**
* @param student the student to set
*/
public void setStudent(Student student) {
this.student = student;
}
public Map getRequest() {
return request;
}
public void setRequest(Map request) {
this.request = request;
}


}
jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>IPDASSSS</title>
<link rel="stylesheet" type="text/css" href="themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="themes/icon.css">
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jquery.easyui.min.js"></script>
<script>
function dosubmit() {
document.forms[0].enctype="multipart/form-data";
document.forms[0].submit();
}
</script>
</head>

<body>
<form id="loginform" name="loginform" action="loginAction" method="post">
<div id="loginin" class="easyui-window" closable="false" draggable="false" resizable="false" title="欢迎登陆" style="width:300px;height:120px;">
登陆ID:<input name="student.userid"/><br>
登陆密码:<input name="student.password"/><br>
<a class="easyui-linkbutton" iconCls="icon-ok" onclick="dosubmit()">登陆</a>
</div>
</form>
</body>
</html>
提交到action后student为null,一直不明白怎么回事?求大神解答!
...全文
429 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
救生圈 2012-11-11
  • 打赏
  • 举报
回复
引用 10 楼 jerrygr_ok 的回复:
楼主,你的form提交不了,不是因为注入的问题,而是你的form表单中设置了一个属性: JavaScript code1234567<script> function dosubmit() { document.forms[0].enctype="multipart/form-data"; document.forms[0].submit……
我把document.forms[0].enctype="multipart/form-data";删掉了,可是还是不行 之前用的提交按钮是可以提交的,后来我将提交换成了link的形式,就不行了
  • 打赏
  • 举报
回复
10楼 正解
小小小小精灵 2012-11-05
  • 打赏
  • 举报
回复
引用 10 楼 jerrygr_ok 的回复:
楼主,你的form提交不了,不是因为注入的问题,而是你的form表单中设置了一个属性: JavaScript code 1234567 <script> function dosubmit() { document.forms[0].enctype="multipart/form-data"; document.forms[0].……
你可以试试这个 还有 <action name="loginAction" class="com.tfsp.action.LoginAction" method="login"> <result >/studentList.jsp</result> <result name="error">/error.jsp</result> </action> 怎么只有出错时的呢,成功的时候没有name属性
jerrygr_ok 2012-11-05
  • 打赏
  • 举报
回复
楼主,你的form提交不了,不是因为注入的问题,而是你的form表单中设置了一个属性:

<script>
 function dosubmit() {
         document.forms[0].enctype="multipart/form-data";
         document.forms[0].submit(); 
 }
</script>
document.forms[0].enctype="multipart/form-data";”它的意思是表示你的这个表单是用于上传的,而对用于上传的form表单,IE是不允许在js方法中进行提交的,即:类似"document.forms[0].submit(); "这样的提交方式是不允许的,只能通过submit按钮的方式进行提交 希望可以帮到你,祝你好运!!!
Giberson1 2012-11-05
  • 打赏
  • 举报
回复
你把下面代码:

    <form id="loginform" name="loginform" action="loginAction" method="post">
改成:

    <form id="loginform" name="loginform" action="/你的项目名/loginAction" method="post">
linjiangxiaozhen 2012-11-05
  • 打赏
  • 举报
回复
form表单提交的 enctype常用的有两种enctype="application/x-www-form-urlencoded"和enctype="multipart/form-data",前者是默认的提交方式,提交时会对表单数据进行编码,适用于普通的表单提交,后者提交不对数据进行编码,适用于有文件上传的表单。对于你的问题,使用前者就可以了,如果你的表单数据中有中文,记得设置method为post,get方法会容易出现乱码
Geek41 2012-11-05
  • 打赏
  • 举报
回复
10L正解...
noahxinhao 2012-11-05
  • 打赏
  • 举报
回复
引用 5 楼 daizhen256 的回复:
引用 1 楼 zimu002 的回复:private Student student = new Student(); 测试一下是不是注入的时候出现错误了 恩,好像是注入的时候出现问题了。 怎么会出现这个问题呢?
到配置文件里面看看你注入的配置有没有写错
wzj-java 2012-11-05
  • 打赏
  • 举报
回复
只是没有接受到参数的话可能就是是因为你设置multipart/form-data属性
Sun_wb 2012-11-04
  • 打赏
  • 举报
回复
你的login()方法呢
www_Mr_wang 2012-11-04
  • 打赏
  • 举报
回复
如果是注入的问题的话,struts2跟spring整合 需要用到一个插件包 你放进去了吗?还有就是要在web.xml配置下,你这些都做了吗?
救生圈 2012-11-04
  • 打赏
  • 举报
回复
引用 4 楼 www_Mr_wang 的回复:
在你的LoginAction中为这个private Student student;写上get 和set方法
set get 方法生成了,不管用
救生圈 2012-11-04
  • 打赏
  • 举报
回复
引用 1 楼 zimu002 的回复:
private Student student = new Student(); 测试一下是不是注入的时候出现错误了
恩,好像是注入的时候出现问题了。 怎么会出现这个问题呢?
www_Mr_wang 2012-11-04
  • 打赏
  • 举报
回复
在你的LoginAction中为这个private Student student;写上get 和set方法
救生圈 2012-11-04
  • 打赏
  • 举报
回复
引用 2 楼 jinoon 的回复:
是无法提交 还是接受不到表单值
无法提交,form是null
jinoon 2012-11-04
  • 打赏
  • 举报
回复
是无法提交 还是接受不到表单值
noahxinhao 2012-11-04
  • 打赏
  • 举报
回复
private Student student = new Student(); 测试一下是不是注入的时候出现错误了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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