请教一个struts2赋值方面问题
ttitfly
2008-05-29
1.页面部分
<a href="${ctx}/admin/user!delete.action?id=${id}">删除</a> 确定这个参数id是有值的。 2.Action方法定义关键部分代码如下: @SuppressWarnings("unchecked") public abstract class CRUDAction<T> extends ActionSupport implements Preparable, ModelDriven { // the model protected T entity; /** * @see ModelDriven */ public T getModel() { return entity; } /** * 每个请求方法执行前都会调用 */ public void prepare() throws Exception { if (getId() != null) { entity = (T) MethodUtils.invokeMethod(getManager(), "get" , new Object[]{entityClass,getId()}); if (entity == null) throw new IllegalArgumentException("id not exist"); } else entity = entityClass.newInstance(); onPrepare(); } /** * 删除对象. */ public String delete() throws Exception { getManager().removeById((Long)getId()); return SUCCESS; } /** * 从参数中取得id,子类必须实现. */ protected abstract Object getId(); } @SuppressWarnings( { "serial", "unchecked" }) public class UserAction extends CRUDAction<User> { private Long id; @Override protected Long getId() { // String str[] = (String[])ActionContext.getContext().getParameters().get("id"); // String str1 = (String)ActionContext.getContext().get("id"); return id;//这里被父类CRUDAction回调时放回的为null,不知道是什么原因 } public void setId(Long id) { this.id = id; } } 问题:getId()方法返回的id为null,getId()方法里注释的2行代码 ,str[]是有值的,str1是没有值的,也就是说没有自动给id属性赋上值,请问这是为什么呢?多谢 |
|
ferreousbox
2008-07-21
使用模型驱动时struts2还自动注入属性么?
|
|
congpeixue
2008-09-11
给id属性赋值, 是发生在首次prepare调用之后的。
若如此调用 public String delete() throws Exception { prepare(); // getManager().removeById((Long)getId()); return SUCCESS; } 即会发现 引用 id = 1
getID() = 1 |