首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2的Action怎么返回指定路径的jsp或html,而不是返回SUCCESS、ERROR

2012-12-25 
struts2的Action如何返回指定路径的jsp或html,而不是返回SUCCESS、ERROR是否能够在Action里直接return /WEB

struts2的Action如何返回指定路径的jsp或html,而不是返回SUCCESS、ERROR
是否能够在Action里直接return /WEB-INF/jsp/xxx.jsp 或是 xxx.html
而不是返回return SUCCESS 这些struts配置文件里定义的
[解决办法]
用request和reponse

请求转发:
request.getRequestDispatcher("target.jsp").forward(request.response);

重定向:
response.sendRedirect("target.jsp");
[解决办法]
直接在Action 实现ServletRequestAware、ServletResponseAware接口 重写方法;并获得request或者是response;  

利用request.getRequestDispatcher("XXXX.jsp").forward(request.response);
或者response.sendRedirect("xxxx.jsp");

但是不推荐这样做~~,这样破坏了struts2的思想
[解决办法]


/**
 * 用户员工action
 * @version 1.0
 */
@ActionBean(name = "/user", interceptor = "myInterceptor")
public class UserAction extends BaseAction {

private static final Logger log = LoggerFactory.getLogger(UserAction.class);
private static final String LIST = "/jsp/user/list.jsp";
private static final String ADD = "/jsp/user/add.jsp";
private static final String EDIT = "/jsp/user/edit.jsp";
private static final String PROMPT = "/prompt.jsp";

/**
 * 员工列表
 * @return String
 */
public String list() {
log.info("员工列表");
return LIST;
}

/**
 * 添加员工
 * @return String
 */
public String add() {
if ("save".equals(paramString(METHOD_NAME))) {
try {
Company company = companyMng.get(id);
bean.setCompany(company);
bean.setNamePY(UtilTool.getBean().getFirstPinyin(bean.getRealName()));
bean = mng.add(bean);
company.setUserNum(company.getUserNum() + 1);
company = companyMng.edit(company);
resetPage(OPERATE_RIGHT, "parent.getUsers();", "添加员工【" + bean.getRealName() + "】成功!");
} catch (Exception e) {
resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
}
return PROMPT;
}
setRequestAttr("company", companyMng.get(id));
return ADD;
}

/**
 * 编辑员工
 * @return String
 */
public String edit() {
if ("update".equals(paramString(METHOD_NAME))) {
try {
bean.setNamePY(UtilTool.getBean().getFirstPinyin(bean.getRealName()));
bean = mng.edit(bean);
resetPage(OPERATE_RIGHT, "parent.getUsers();", "编辑员工【" + bean.getRealName() + "】成功!");
} catch (Exception e) {
resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
}
return PROMPT;
}
bean = mng.get(id);
return EDIT;
}

/**
 * 删除员工
 * @return String
 */
public String del() {
try {
bean = mng.del(id);
Company company = bean.getCompany();
company.setUserNum(company.getUserNum() - 1);
company = companyMng.edit(company);
resetPage(OPERATE_RIGHT, "parent.getUsers();", "删除员工【" + bean.getRealName() + "】成功!");


} catch (Exception e) {
resetPage(OPERATE_ERROR, "", OPERATE_ERROR_MESSAGE);
}
return PROMPT;
}

@MatchingBean
public UserMng mng;
@MatchingBean
public CompanyMng companyMng;
private User bean;

public User getBean() {
return bean;
}

public void setBean(User bean) {
this.bean = bean;
}

}


[解决办法]
只要你能想的到,就能做得到!
毛主席教导我们:人有多大胆,地有多大产!
[解决办法]
to s478853630:
我也是在方法里return /WEB-INF/template/indexS.html,但是报404错误

我Action继承的是ActionSupport,是不是有影响?配置文件里应该怎么配呢?
[解决办法]
你为什么要return  /WEB-INF 这个路径呢? 我相信 /indexS.html在你的发布项目的路径应该是
http://localhost:8080/project/template/indexS.html
[解决办法]
struts的运行机制也不允许啊。
[解决办法]
你可以return success,但是success需要跳转的页面里可以写你需要的跳转的目录,感觉类似于跳2次
[解决办法]
如果你要这样的实现,为什么还用struts呢!
破坏理念了

热点排行