struts2标签使用小结

来源:互联网 发布:琅琊榜香港遇冷 知乎 编辑:程序博客网 时间:2024/04/30 11:06
1 #号,能访问actioncontext的上下文资源,例子如下:
public class OgnlAction extends ActionSupport implements ServletContextAware,
ServletRequestAware, SessionAware {

private static final long serialVersionUID = -6175904602786022346L;

private HttpServletRequest request;
private ServletContext application;
private Map<String, Object> session;

@SuppressWarnings("all")
private List<Magazine> magazineList = new ArrayList<Magazine>() {
{
add(new Magazine("时代周刊", 10));
add(new Magazine("足球之夜", 19));
add(new Magazine("时尚", 20));
add(new Magazine("时代影视", 50));
}
};

public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public void setServletContext(ServletContext application) {
this.application = application;
}

@SuppressWarnings("all")
public void setSession(Map session) {
this.session = session;
}

public String execute() {

request.setAttribute("account", "account from request");
application.setAttribute("account", "account from response");
session.put("account", "account from session");

return Action.SUCCESS;
}

public List<Magazine> getMagazineList() {
return magazineList;
}

public void setMagazineList(List<Magazine> bookList) {
this.magazineList = bookList;
}

JSP页面:
所有的ID:<struts:property value="#parameters.id"/> <br/>
第一个ID:<struts:property value="#parameters.id[0]"/> <br/>
request 中取属性:<struts:property value="#request.account"/> <br/>
session 中取属性:<struts:property value="#session.account"/> <br/>
application 中取属性:<struts:property value="#application.account"/> <br/>
attr 中取属性:<struts:property value="#attr.account"/> <br/>
<hr />
价格大于18元的杂志共有 <struts:property value="magazineList.{?#this.price>18}.size()" /> 本,分别是:<br/>
<struts:iterator value="magazineList.{?#this.price>18}">
<struts:property value="name" /> - ¥<struts:property value="price" />. <br/>
</struts:iterator>
<hr />
名称包含“时代”二字的杂志共有 <struts:property value="magazineList.{?#this.name.contains('时代')}.size()"/> 本,分别是:<br/>
<struts:iterator value="magazineList.{?#this.name.contains('时代')}">
<struts:property value="name" /> - ¥<struts:property value="price" />. <br/>
</struts:iterator>
<hr />
“足球之夜”的价格为 ¥<struts:property value="magazineList.{?#this.name.contains('足球之夜')}[0].price"/>。

其中注意OGNL的灵活用法

2 下面两个注意区别:
    <struts:label label="#request.account"></struts:label>
<struts:label label="%{#request.account}"></struts:label>

    其中第一个会输出字符串#request.account",第二个会把request.account的结果输出.

3 autocomplete控件:
  
<s:url id="dataUrl" value="/autocompleteAjaxData.jsp" />

请选择国家:
<struts:autocompleter name="country" theme="ajax" href="%{dataUrl}"
loadOnTextChange="true" loadMinimumCount="1" autoComplete="false"
showDownArrow="true" indicator="indicator"  />
<img id="indicator" src="images/loading.gif" />
     其中href为获取数据的URL,indicator可以为一个属性或文字,获取数据的JSP如下:
out.clear();

request.setCharacterEncoding("UTF-8");

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

String[] countries = { "。。。。。“}
String country = request.getParameter("country");

if (country == null)
country = "";

StringBuffer buffer = new StringBuffer();

for (int i = 0; i < countries.length; i++) {
if (countries[i].toLowerCase()
.startsWith(country.toLowerCase())) {
if (buffer.length() != 0)
buffer.append(",");
buffer.append("['" + countries[i] + "']");
}
}

Thread.sleep(500);

out.print("[" + buffer + "]");

4 连动框doubleselect:
  <struts:head theme="ajax" />
<%
List<String> provinceList = new ArrayList<String>();
provinceList.add("北京");
provinceList.add("上海");
provinceList.add("天津");
provinceList.add("重庆");
provinceList.add("河北");
provinceList.add("河南");
provinceList.add("山东");
provinceList.add("山西");
provinceList.add("江苏");
provinceList.add("浙江");

request.setAttribute("provinceList", provinceList);

Map<String, List<String>> cityMap = new HashMap<String, List<String>>();

{
// 北京市
List<String> cityList = new ArrayList<String>();

cityList.add("东城区");
cityList.add("西城区");
cityList.add("海淀区");
cityList.add("朝阳区");

cityMap.put("北京", cityList);
}
{
// 山东省
List<String> cityList = new ArrayList<String>();

cityList.add("青岛");
cityList.add("济南");
cityList.add("潍坊");
cityList.add("烟台");
cityList.add("淄博");

cityMap.put("山东", cityList);
}

request.setAttribute("cityMap", cityMap);
%>

<struts:form action="login">
<struts:doubleselect name="province" list="#request.provinceList"
doubleName="city" doubleList="#request.cityMap.get(top)" label="请选择省份、市"/>
</struts:form>
5 optiontransferselect标签
<%
List<String> provinceSelected = new ArrayList<String>();

provinceSelected.add("北京");
provinceSelected.add("上海");
provinceSelected.add("天津");
provinceSelected.add("重庆");
provinceSelected.add("河北");
provinceSelected.add("河南");
provinceSelected.add("山东");
provinceSelected.add("山西");
provinceSelected.add("江苏");
provinceSelected.add("浙江");

request.setAttribute("provinceSelected", provinceSelected);

List<String> provinceUnselected = new ArrayList<String>();

provinceUnselected.add("湖南");
provinceUnselected.add("湖北");
provinceUnselected.add("云南");
provinceUnselected.add("广东");
provinceUnselected.add("广西");

request.setAttribute("provinceUnselected", provinceUnselected);
%>
<struts:form action="login">
<struts:optiontransferselect name="province"
doubleList="#request.provinceSelected"
list="#request.provinceUnselected" doubleName="city" leftUpLabel="向上"
leftDownLabel="向下" rightDownLabel="向下" rightUpLabel="向上"
leftTitle="已经选中的省份" headerKey="" headerValue="---请选择省份---"
rightTitle="剩余的省份" />
</struts:form>

6 TAB标签
<s:tabbedPanel id="test">

<s:div id="one" label="第一个 TabItem" theme="ajax" labelposition="top"
cssStyle="padding: 10px; ">
第一个 TabItem <br />
第一个 TabItem <br />
</s:div>

<s:div id="two" label="第二个 TabItem" theme="ajax"
cssStyle="padding: 10px; ">
        第二个 TabItem <br />
        第二个 TabItem <br />
</s:div>

<s:url action="divNews" id="divNewsUrl"></s:url>
<s:div id="three" label="新闻列表" theme="ajax" href="%{#divNewsUrl}">
</s:div>

</s:tabbedPanel>

<br/>

<s:tabbedPanel id="test2" closeButton="tab">

<s:div id="one2" label="第一个 TabItem" theme="ajax" labelposition="top"
cssStyle="padding: 10px; ">
第一个 TabItem <br />
第一个 TabItem <br />
</s:div>

<s:div id="two2" label="第二个 TabItem" theme="ajax"
cssStyle="padding: 10px; ">
        第二个 TabItem <br />
        第二个 TabItem <br />
</s:div>

<s:div id="three2" label="新闻列表" theme="ajax" href="%{#divNewsUrl}">
</s:div>

</s:tabbedPanel>
原创粉丝点击