+ -
当前位置:首页 → 问答吧 → 真心求教 strus的一个小问题

真心求教 strus的一个小问题

时间:2014-03-17

来源:互联网

大家好,想请问一个关於struts bean:define 的问题
引用:<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<body>
<h2>Login</h2>
<br>

<html:messages id="msg" message="false">
<bean:write name="msg"/>
</html:messages>
<br>

<bean:define id="bean1" value="bean" toScope="session"/>

<html:form action="/pwlookup" >
<html:text property="password"/><br>
<html:text property="url"/>
<html:submit property="function" value="password"/>
<html:submit property="function" value="url"/>
</html:form>

<br>
<a href="fwaction.do">ForwardAction</a>

<br><font color="red" ><html:errors /></font>
</body>
</html>
引用:package samples.others;

import java.util.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import org.apache.struts.action.*;
import org.apache.struts.actions.*;
import org.apache.struts.validator.DynaValidatorForm;

public class PasswordLookupDispatch extends LookupDispatchAction {

@Override
protected Map<String, String> getKeyMethodMap() {
Map<String, String> map= new HashMap<String,String>();
map.put("input.pw", "addPassword");
map.put("input.url", "addUrl");
return map;
}


public ActionForward addPassword(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DynaValidatorForm passwordForm = (DynaValidatorForm)form;
ActionErrors errors = new ActionErrors();
if(passwordForm.getString("password").equals("leo")){
errors.add("password", new ActionMessage("errors.pw"));
saveErrors(request, errors);
}
System.out.println(passwordForm.getString("password"));
//response.getWriter().println("ADD PASSWORD");

return mapping.findForward("success");
}

public ActionForward addUrl(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String str = (String)request.getSession().getAttribute("bean1");
response.getWriter().println(str);
response.getWriter().println("ADD URL");
return null;
}

}
如果bean define的toScope 是session的话,在servlet里面就可以得到jsp中设定的讯息;
但如果把toscope设为 request的话,servlet就出现 null (当然已经改为 (String)request.getAttribute("bean1");)

想请问是不是出了什么问题?还是toscope里不可以用request????
谢谢

作者: sense2000   发布时间: 2014-03-17

Action 同 view 好似系两条路嚟喎?

Dispatcher -> either action or view

上一个 request 既 view 内 define 的 request bean 何从出现喺今个 request 中 action 的 request scope?

咁写法 session 系 work 的因为 cross request.
引用:原帖由 sense2000 於 2014-2-20 07:54 发表
大家好,想请问一个关於struts bean:define 的问题





如果bean define的toScope 是session的话,在servlet里面就可以得到jsp中设定的讯息;
但如果把toscope设为 request的话,servlet就出现 null (当然已 ...

作者: a8d7e8   发布时间: 2014-03-17

多谢师兄解答

这样理解不知道有没有问题?

当submit了url时候就同时出现两条request
a .jsp中的bean define做出来的bean。> 由於request完结,这个bean就死左(不知到是先出现这个request?又或是根本没有出现这个request?);
b 。jsp中的url的submit button > action > 由於a的request已经结束,所以就null。

但如果是session的话,只要browser不关掉,资料依然保存,所以就可以在action拿到资料了。

谢谢~~~

作者: sense2000   发布时间: 2014-03-17