Struts2标签——数据的获取和输出

最近开始用Struts2框架,使用Struts2标签也成了家常便饭了,本章主要总结下在使用过程中数据的获取和输出。

可能会有所遗漏,也可能会有所谬误,希望大家多指点、多交流,在使用过程中能更加清晰、熟练。

本文中统一前缀为s。前缀可配置

想知道在前台哪些数据是能获取到的,使用<s:debug></s:debug>是一种非常不错的方式。我们在jsp中加上debug,那么在前台就会显示这个页面能够获取到的数据,我们可以看到数据主要分为两大类:Value Stack Contents和Stack Context

  • Value Stack Contents:值栈,存放表单中的值。ValueStack里面的东西先入后出,很多没有id的元素使用完之后就退栈了。可以直接引用,例如:

User类:

package com.dpc.test;

import java.util.Date;

public class User {
	private Long id;
	private String name;
	private Date date;
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

action中

package com.dpc.test;

public class UserAction {
	private User user;
	private String searchName;
	public String getSearchName() {
		return searchName;
	}
	public void setSearchName(String searchName) {
		this.searchName = searchName;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

在JSP中取得user对象中的内容和searchName如下:

<s:textfield name="user.name" id="name" />

<s:hidden name="user.id" id="id" />

<s:textfield name="searchName" id="searchName" />

输出:<s:property value="%{user.name}" />     <s:property value="%{searchName}" />

日期格式化输出,必须是Date类型的才能使用如下方式:

<s:date name="user.date" format="yyyy-MM-dd" />
  • StackContext:stack上下文,它包含一些列对象,包括request/session/attr/application map等,这些命名对象与根对象无关,访问这些对象需要使用#前缀指明。

request中的值:

<%request.getAttribute("name", "xxxx");%>
获取:%{#request.name}
输出:<s:property value="#request.name"/>

session中的值:

<%session.getAttribute("name");%>
<s:property value="#session.name"/>

parameters中的值(传递的参数值):

<%request.getParameter("name");%>
<s:property value="#parameters.name[0]"/>


参考文档:

WebWork 2.0 Tags

Struts2 Core 2.1.8.1


原文地址:https://www.cnblogs.com/javawebsoa/p/3112844.html