JS解析action传来带实体类转map的MAP

Struts2中&Result类型配置详解
一个result代表了一个可能的输出。当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出。
在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport
这个类才可以使用下面的结果代码,如下所示:
public interface Action
&&& public
static final String SUCCESS = “success”;
&&& public
static final String NONE = “none”;
&&& public
static final String ERROR = “error”;
&&& public
static final String INPUT = “input”;
&&& public
static final String LOGIN = “login”;
&& 其中 Struts2应用在运行过程中若发现addFieldError()中有信息或者类型转换失败或着输入校验失败等情况
那么它会自动跳转到name为input的&result/&,然后转到INPUT所对应的页面
若JSP页面中表单是用普通&form&编写的,发生错误而返回该页面时,则原数据将消失
若JSP页面中表单是用&s:form/&编写的,发生错误而返回该页面时,则原数据仍存在
若没有提供name值为input的&result/&,那么发生错误时,将直接在浏览器中提示404错误&
& 除了这些预定义的结果码外,开发人员也可以定义其它的结果码来满足自身应用程序的需
Result配置由两部分组成:一部分是result映射,另一部分是result类型。下面我们分别对
这两部分进行介绍。
一、配置 result映射
在result映射的配置中,在指定实际资源的位置时,可以使用绝对路径,也可以使用相对路径。
绝对路径以斜杠(/)开头,相对于当前的Web应用程序的上下文路径;
相对路径不以斜杠(/)开头,相对于当前执行的action的路径,也就是namespace指定的路径。
& &package name="default"
extends="struts-default" namespace="/admin"&
&action name="login"
class="com.ibm.LoginAction"&
&result&success.jsp&/result&
name="error"&/error.jsp&/result&
&&/package&
如果当前Web应用程序的上下文路径是/Shop,那么请求/Shop/admin/login.action,执行成功后,转向的页面路径为:/Shop/admin/success.执行失败后,转向的页面路径为/Shop/error.jsp.
二、result结果类型详解
type 所有类型 :(在struts2-core.jar/struts-default.xml中可以找到)
用来处理Action 链
com.opensymphony.xwork2.ActionChainResult
dispatcher(默认值)
用来转向页面,通常处理 JSP
org.apache.struts2.dispatcher.ServletDispatcherResult
重定向到一个URL
org.apache.struts2.dispatcher.ServletRedirectResult
redirectAction
重定向到一个 Action
org.apache.struts2.dispatcher.ServletActionRedirectResult
显示源文件内容,如文件源码
org.apache.struts2.dispatcher.PlainTextResult
freemarker
处理 FreeMarker 模板
org.apache.struts2.views.freemarker.FreemarkerResult
httpheader
控制特殊 http 行为的结果类型
org.apache.struts2.dispatcher.HttpHeaderResult
向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据。
org.apache.struts2.dispatcher.StreamResult
处理 Velocity 模板
org.apache.struts2.dispatcher.VelocityResult
处理 XML/XLST 模板
&org.apache.struts2.views.xslt.XSLTResult
&& <font STYLE="font-size: 24" COLOR="#、dispatcher结果类型
&& Struts2在后台使用Servlet API
的RequestDispatcher来转发请求,因此在用户的整个请求/响应过程中,目标Servlet/JSP接收到的request/response对象,与最初的Servlet/JSP相同。
&& Dispatcher结果类型的实现是org.apache.struts2.dispatcher.ServletDispatcherResult,该类的二个属性(property):location和parse,这两个属性可以通过struts.xml配置文件中的result元素的param子元素来设置。param元素的name属性指定结果类型实现类的属性名,param元素的内容是属性的值。例如:
name=“success”&
type=“dispatcher”&
&param name=“location”
&/success.jsp&/param&
&&param name=“parse”
&true&/param&
&& A、location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类型的值,如果为true,则解析location参数中的OGNL表达式;如果为false,则不解析。parse属性的默认值就是true.
location参数是默认的参数,在所有的Result实现类中,都定义了一个字符串类型的DEFAULT_PARAM静态常量,专门用于指定默认的参数名。
DEFAULT_PARAM常量的定义:public static final String
DEFAULT_PARAM=“location”;
& B、在设置location参数时,可以在参数值中使用OGNL表达式。
&action name=“viewNews”
class=“com.ibm.ViewNewsAction”
&result name=“success”&
type=“dispatcher”&
&!--如果参数是中文:请参看最底部例子--&
&&& &param name=“location”
&/viewNews.jsp?id=${id}&/param&
&&param name=“parse”
&true&/param&
&/action&&&&
考虑到默认值的使用(dispatcher和location都是默认值),上述可以简化为:
&action name=“viewNews”
class=“com.ibm.ViewNewsAction”&
&result name=“success”
&viewNews.jsp?id=${id}&/result&
&2、redirect结果类型(重定向到一个Url,也可以是Action或一个页面)
Redirect结果类型在后台使用HttpServletResponse的sendRedirect方法将请求重定向到指定的URL,它的实现类是org.apache.struts2.dispatcher.ServletRedirectResult.该类同样有二个属性(property):location和parse,在使用redirect结果类型的场景中,用户要完成一次与服务器之间的交互,浏览器需要完成两次请求,因此第一次请求中的数据在第二次请求中是不可用的,这意味在目标资源中是不能访问action实例、action错误以及错误等。
如果有某些数据需要在目标资源中访问,
& i、一种方式是将数据保存到Session中,
& ii、另一种方式是通过请求参数来传递数据。
示例(1)、&result name="success" type="redirect"&&&
&&&&&&&&&&&&
name="location"&foo.jsp&/param&
&&&&&&&&&&&&
name="parse"&false&/param&&!--不解析OGNL--&
示例(2)、
&& &package
name="passingRequestParameters"extends="struts-default"namespace="/passingRequestParameters"&&&
&& &-- Passparameters (reportType, width
and height),重定向到Url并且传参 ,如果参数是中文:请参看最底部例子--&&&
The redirect-action url generated will be
/genReport/generateReport.jsp?reportType=pie&width=100&height=100&&
&actionname="gatherReportInfo"
class="..."&&&
&resultname="showReportResult"
type="redirect"&&&
name="location"&generateReport.jsp&/param&&&
name="namespace"&/genReport&/param&&&
name="reportType"&pie&/param&&&
name="width"&100&/param&&
name="height"&100&/param&&
&/result&&&
&/action&&&
&/package&&
3、redirectAction结果类型(重定向到一个Action)
他经常用于防止表单重复提交,比方说在增加完用户之后要显示列表&
&redirectAction结果类型的实现类是org.apache.struts2.dispatcher.ServletActionRedirectResult,该类是ServletRedirectResult的子类,因此我们也就可以判断出redirectAction结果类型和redirect结果类型的后台工作原理是一样的,即都是利用HttpServletResponse的sendRedirect方法将请求重定向到指定的URL。
& &package
name="public"extends="struts-default"&&&
name="login"class="..."&&&
&!--Redirect to another
重定向到不同命名空间下的&&&
action --&&
type="redirectAction"&&&
&&&&&&&&&&
&param name="actionName"&dashboard&/param&&
&&&&&&&&&&
&param name="namespace"&/secure&/param&&
&/result&&
&/action&&
&/package&&
&package name="secure"extends="struts-default"
namespace="/secure"&&&
&&& &-- Redirectto an action in the same
namespace,重定向到同一命名空间下的action --&
&action name="dashboard"
class="..."&&&
&result&dashboard.jsp&/result&&
name="error"type="redirectAction"&error&/result&&
&/action&&
&action name="error"
class="..."&&&
&result&error.jsp&/result&
&/action&&
&/package&&
name="passingRequestParameters"extends="struts-default"namespace="/passingRequestParameters"&&&
&-- Passparameters (reportType, width and
height),重定向到Action并且传参,如果参数是中文:请参看最底部例子
&& TheredirectAction url
generated will be
/genReport/generateReport.action?reportType=pie&width=100&height=100&
&& &action
name="gatherReportInfo"
class="..."&&&
name="showReportResult" type="redirectAction"&&&
name="actionName"&generateReport&/param&&
name="namespace"&/genReport&/param&&
name="reportType"&pie&/param&&
name="width"&100&/param&
name="height"&100&/param&
name="empty"&&/param&
name="supressEmptyParameters"&true&/param&&
&/result&&
&/action&&
&/package&
4、链接类型&
result:chain(从一个Action转发到另一个Action)
& chain结果类型有4个属性,分别是:
actionName (default) - the name of the action that will be
chained to
namespace - used to determine which namespace the Action is
in that we're chaining. If namespace is null, this defaults to the
current namespace
method - used to specify another method on target action to
be invoked. If null, this defaults to execute method
skipActions - (optional) the list of comma separated action
names for the actions that could be chained to
name="public"extends="struts-default"&&&
&&& &!-- Chain
creatAccount to login, using the default parameter
,链接到同一命名空间下的Action,--&&
&action name="createAccount"
class="..."&&&
type="chain"&login&/result&
&/action&&
&actionname="login"
class="..."&&&
&!--Chain to another
namespace --&&
type="chain"&&&
&&&&&&&&&&
name="actionName"&dashboard&/param&&
&&&&&&&&&&
name="namespace"&/secure&/param&&
&/result&&
&/action&&
&/package&&
&package name="secure"
extends="struts-default"namespace="/secure"&&&
&actionname="dashboard"
class="..."&&&
&result&dashboard.jsp&/result&&
&/action&&
&/package&
5、HttpHeader
Result:HttpHeader(用来控制特殊的Http行为)
& httpheader结果类型很少使用到,它实际上是返回一个HTTP响应的头信息
&示例:&result
name="success"type="httpheader"&&&
&paramname="status"&204&/param&
&paramname="headers.a"&a custom
value&/param&&&&&&
&paramname="headers.b"&another custom
value&/param&&
&/result&&
name="proxyRequired"type="httpheader"&&&
&paramname="error"&305&/param&
&paramname="errorMessage"&this action
must be accessed through
aprozy&/param&&
&/result&&
Result(向浏览器发送InputSream对象,通常用来处理文件下载)
name="success"type="stream"&&&
name="contentType"&image/jpeg&/param&&
name="inputName"&imageStream&/param&&
name="contentDisposition"&filename="document.pdf"&/param&&&
name="bufferSize"&1024&/param&&
7、PlainText
Result(显示原始文件内容,例如文件源代码)
name="displayJspRawContent"&&
type="plaintext"&/myJspFile.jsp&/result&&
&/action&&&
name="displayJspRawContent"&&
type="plaintext"&&&
name="location"&/myJspFile.jsp&/param&&
name="charSet"&UTF-8&/param&
&/result&&
&/action&&
若仅设置type="plainText"的话,页面中显示中文时会乱码,这时就可以借助它的charSet属性以解决中文显示时的乱码问题,如果不设置charSet属性,反而去配置struts.i18n.encoding全局属性,是不能解决问题的
设置charSet属性的目的就是让JSP页面的编码与明文显示时的编码一致
8、Velocity
Result(处理Velocity模板)
name="success"type="velocity"&&&
&paramname="location"&foo.vm&/param&&
&/result&&
Result(处理XML/XLST模板)& &result
name="success"
type="xslt"&&&
&paramname="location"&foo.xslt&/param&&
&paramname="matchingPattern"&^/result/[^/*]$&/param&&
&paramname="excludingPattern"&.*(hugeCollection).*&/param&&
&/result&&
FreeMarkerResult&
(处理FreeMarker模板)
name="success"type="freemarker"&foo.ftl&/result&
附、另外第三方的Result类型还包括JasperReportsPlugin,专门用来处理JasperReport类型的报表输出。
&%@ tagliburi="http://tiles.apache.org/tags-tiles"
prefix="tiles"%&&
&%@ taglib prefix="s"uri="/struts-tags"
& &%-- S Used in Header
&tiles:importAttribute
name="title"scope="request"/&&&
&head&&title&&tiles:getAsStringname="title"/&&/title&&/head&&&
&tiles:insertAttribute
name="header"/&&&
&pid="body"&&&
&tiles:insertAttributename="body"/&&&
&p&Noticethat this is a layout made
in JSP&/p&
注意!!!!.传递中文
记住永远不要在浏览器的地址栏中传递中文。在传递中文前先进行编码
A.action中
public class User extends
ActionSupport{
&private S
&public String getUsername() {
&public void setUsername(String username) {
&&this.username =
&@Override
&public String execute() throws Exception {
&&// TODO Auto-generated method
&&username=URLEncoder.encode("郭蕾","utf-8");//先进行编码&&System.out.println(username);
&&return "redirect";
B.struts.xml中
&&action name="redirect"
class="action.User"&
&&result type="redirect"
name="redirect"&
&/redirect.jsp?username=${username}//如果要传递两个参数,中间用&代替&
&&/action&
在这里使用了类似于el表达式的方式传值,${username}其中username为action中定义的
C.redirect.jsp中
&& &%String
s=request.getParameter("username");
String(s.getBytes("iso8859-1"),"utf-8");
&s=URLDecoder.decode(s,"utf-8");
&out.println(s);
重定向中传递中文先进行编码,在jsp页面中先接受参数,然后对其进行字节分解,然后进行解码。
参考博文连接:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。struts2中,JS文件里怎么获得后台action中传过来的值
struts2中,JS文件里怎么获得后台action中传过来的值
action中有username登录后用JS文件接收:name = '${username}';alert(name + &你好!&);JSP页面直接调用JS文件,然后页面直接弹出 '${username}'你好 的对话框。。。在JSP页面用&s:property value=&username& / & 是可以接收到username变量的。要想在对话框里弹出“用户名你好”来,该怎么做啊?貌似是我JS文件里没获取到username对象。
昵称: wb &时间:
昵称: goodsun00 &时间:
昵称: pengzhenonline &时间:jQuery 遍历 - map() 方法
jQuery 遍历 - map() 方法
构建表单中所有值的列表:
$(&p&).append( $(&input&).map(function(){
return $(this).val();
}).get().join(&, &) );
定义和用法
map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象。
.map(callback(index,domElement))
callback(index,domElement)
对当前集合中的每个元素调用的函数对象。
由于返回值是 jQuery 封装的数组,使用 get() 来处理返回的对象以得到基础的数组。
.map() 方法对于获得或设置元素集的值特别有用。请思考下面这个带有一系列复选框的表单:
&form method=&post& action=&&&
&fieldset&
&label for=&two&&2&/label&
&input type=&checkbox& value=&2& id=&two& name=&number[]&&
&label for=&four&&4&/label&
&input type=&checkbox& value=&4& id=&four& name=&number[]&&
&label for=&six&&6&/label&
&input type=&checkbox& value=&6& id=&six& name=&number[]&&
&label for=&eight&&8&/label&
&input type=&checkbox& value=&8& id=&eight& name=&number[]&&
&/fieldset&
我们能够获得复选框 ID 组成的逗号分隔的列表:
$(':checkbox').map(function() {
return this.
}).get().join(',');
本次调用的结果是字符串:&two,four,six,eight&。
在 callback 函数内部,this 引用每次迭代的当前 DOM 元素。该函数可返回单独的数据项,或者是要被插入结果集中的数据项的数组。如果返回的是数组,数组内的元素会被插入集合中。如果函数返回 null 或 undefined,则不会插入任何元素。js解析json读取List中的实体对象示例_javascript_ThinkSAAS
js解析json读取List中的实体对象示例
js解析json读取List中的实体对象示例
内容来源: 网络
1、由后台action 传给前台是需要将map 转成json格式
代码如下: Map&String, List& resultMap; JSONObject json = JSONObject.fromObject(resultMap); message = json.toString();
List中存放多个student对象 2、前台js 中先将结果json串转成对象
代码如下: var obj = eval("("+data+")");
3、遍历取list 中的对象
代码如下: for(var key in obj){ //第一层循环取到各个list var List = obj[key]; for(var student in List){ //第二层循环取list中的对象 alert(List[student ].id); alert(List[student ].name); } }
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信

我要回帖

更多关于 实体对象转map 的文章

 

随机推荐