Struts2前台往后台传值

本文详细介绍了在Struts2框架中,从前台页面向后台Action传递参数时遇到的问题及解决方案。主要探讨了如何正确设置URL参数,以便后台能够正确接收并处理。同时,还介绍了实现ModelDriven接口的方法,以简化参数接收流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先写下今天的错误

struts2代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
 <package name="user" namespace="" extends="struts-default">
  <action name="updateOrt" class="UserAction" method="updateOrt">
			<result name="success">\html\xiugaiyemian.jsp</result>
  </action>
  <action name="updateUser" class="UserAction" method="updateUser">
			<result name="success">/html/user_update.html</result>
  </action>
 </package>
</struts>

Action代码:

public class UserAction extends ActionSupport{
	
	IService iService;
	User user22;
	List<User> list;
	public void setiService(IService iService) {
		this.iService = iService;
	}
	public User getUser() {
		return user22;
	}
	public void setUser(User user) {
		this.user22 = user;
	}

    //修改用户
	public String updateUser(){
		user22.getId();
		iService.updateUser(user22);
		return "success";
	}
    
    public String updateOrt(){
		System.out.println("---------------"+user22.getId());
//		user22.getId();
//		iService.update(user22);
		return "success";
}

jsp代码:注意错误在这里

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>查询成功</h1>
    	
    	<s:iterator var="userList" value="list" status="status">
    		ID:<s:property value="#userList.id"/>
    		Name:<s:property value="#userList.username"/>
    		<s:a href="updateOrt?id=%{#userList.id}">修改</s:a>
    		<s:a href="deleteUser?id=%{#userList.id}">删除</s:a><br/>
    	</s:iterator>
    	<s:debug></s:debug>
    </body>
    </html>
  2. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="updateUser" method="post">
    		<s:property value="user22.username"/>
    		<s:property value="user22.id"/>
    		<input type="text" name="username">
    		<input type="submit" value="修改">
    	</form>
    </body>
    <s:debug></s:debug>
    </html>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>修改成功</h1>
    </body>
    </html>

 

今天出来的错误,前台往后台传值,怎么都传不过去。后来发现是:

<s:a href="updateOrt?id=%{#userList.id}">修改</s:a>

这里写的是id,后端就要定义String id,并且进行强转,很是麻烦。

第二种方法就是改成

<s:a href="updateOrt?user.id=%{#userList.id}">修改</s:a>

这样就能拿到前台传的user的id

第三种方法就是实现ModelDriven<User>接口,代码如下

public class UserAction extends ActionSupport implements ModelDriven<User>{
	
	IService iService;
	User user22;
	List<User> list;
	public void setiService(IService iService) {
		this.iService = iService;
	}
	public User getUser() {
		return user22;
	}
	public void setUser(User user) {
		this.user22 = user;
	}
    @Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user22;
	}
    public String updateOrt(){
		System.out.println("---------------"+user22.getId());
//		user22.getId();
//		iService.update(user22);
		return "success";
		
	}
    //修改用户
	public String updateUser(){
		user22.getId();
		iService.updateUser(user22);
		return "success";
	}
}

注意:

 <form action="test/user.action" method="post">
        <input type="hidden" name="method:add">
        username:<input type="text" name="username"> <br/>
        password:<input type="text" name="password"> <br/>
        age:<input type="text" name="age"> <br/>
        <input type="submit" name="submit" value="添加用户">
     </form> <br/>

不用user.XX

转载于:https://my.oschina.net/u/3489648/blog/1036525

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值