`
seethemoon
  • 浏览: 48361 次
  • 性别: Icon_minigender_1
  • 来自: 钟祥
社区版块
存档分类
最新评论

struts2标签小结

阅读更多
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>

分享到:
评论

相关推荐

    struts 案例

    "struts2标签小结 - jackyrong - ITeye技术网站.htm"很可能对这些标签进行了总结,包括`s:select`、`s:form`、`s:textfield`等常用标签的用法,以及如何在页面上动态绑定数据和进行条件判断等。 3. **Struts2与...

    Struts2知识点小结-非常实用

    Struts2的标签库定义在URI为 `/struts-tags` 的命名空间下,主要分为三类:UI标签、非UI标签和AJAX标签。 UI标签主要用来构建用户界面,包括表单标签和非表单标签,如树形视图、选项卡等。表单标签用于创建HTML表单...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    Struts2提供了一个内置标签`s:fielderror/&gt;`,它可以自动找到ActionContext中保存的错误信息并显示在页面上。 2. 搭配使用`&lt;s:reset/&gt;`标签。此标签用于清空表单的字段值,但要注意,它并不会清除错误信息。因此,...

    Struts2 in action中文版

    6.2.1 Struts 2标签API语法 113 6.2.2 使用OGNL设置标签属性 115 6.3 数据标签 117 6.3.1 property标签 117 6.3.2 set标签 118 6.3.3 push标签 119 6.3.4 bean标签 120 6.3.5 action标签 122 6.4 控制标签 124 6.4.1...

    关于struts的部分小结

    以上是对Struts框架的简单总结,每个知识点都涉及到Struts2的核心特性,理解和掌握这些知识点对于进行Struts2应用的开发至关重要。在实际项目中,还需要结合其他技术如Spring、Hibernate等进行更复杂的集成和配置。

    Struts 2实战 Struts 2 in action 的中文版

    ### 小结 《Struts 2实战 Struts 2 in action 的中文版》这本书系统地介绍了Struts 2框架的基础知识、核心组件、工作原理以及实际开发技巧。对于希望深入学习和掌握Struts 2框架的开发者来说,这本书是一本不可多得...

    深入浅出Struts2(附源码)

    5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea...

    Struts2权威指南

    第1章 Struts 2概述1  1.1 MVC思想概述2  1.1.1 Web技术的发展2  1.1.2 Model 1和Model 24  1.1.3 MVC思想及其优势6  1.1.4 常用的MVC框架7  1.2 Struts 2的起源和背景8 ... 1.6 本章小结22

    Struts2学习心得

    ### 小结 通过对Struts2框架的国际化功能的介绍和示例分析,我们可以看出Struts2在处理多语言应用方面具有非常强大的能力。通过合理的配置资源文件和使用Struts2提供的标签,开发者可以轻松地为用户提供多语言支持...

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...

    关于struts实验时的临时总结

    ### 关于Struts2实验时的临时总结 #### 概述 本文档是对Struts2实验过程中的几个关键问题及解决方案进行了归纳与整理。通过实际操作过程中遇到的问题及其解决办法,帮助其他开发者避免同样的错误,并提供高效的学习...

    struts2例子.doc

    #### 小结 通过这个简单的Struts2实例,我们不仅学习了如何设置Struts2的环境,还掌握了基本的页面设计和交互逻辑。更重要的是,我们接触到了Struts2框架的一些核心概念,如过滤器配置、标签库使用、动态URL生成等...

    struts资料\前半阶段小结

    在"struts资料\前半阶段小结"这个主题中,我们可以理解为是对学习或使用Struts框架初期阶段的一个总结。以下是对Struts框架核心知识点的详细解释: 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的数据、...

    在Struts 2中实现文件上传

    #### 小结 通过上述步骤,我们可以成功地在Struts 2中实现文件上传功能。需要注意的是,在实际应用中可能还需要考虑更多的细节,比如文件大小限制、文件类型过滤以及错误处理等。这些额外的功能可以通过调整Struts...

    MyEclipse8下struts2开发例程及解析1.doc

    #### 五、小结 通过本文档的学习,我们不仅了解了如何在 MyEclipse 8 环境中快速搭建 Struts 2 开发环境,还掌握了 Struts 2 的基本配置文件 `struts.xml` 和 `web.xml` 的配置方法。这对于初学者来说是非常有价值...

    开发struts2+spring

    #### 12.7 小结 本章主要介绍了如何使用MyEclipse开发Struts2+Spring应用。通过一系列的实际操作,不仅学习了Struts2的基本用法,还了解了如何将其与Spring框架进行整合。通过这些示例,开发者可以更加深入地理解这...

    struts2

    #### 12.7 小结 通过本章的学习,我们不仅掌握了Struts2的基本开发流程,还深入了解了其与Spring框架的整合应用,以及如何处理文件上传下载、表单验证等关键问题。Struts2与Spring的结合,无疑为Java Web开发提供了...

Global site tag (gtag.js) - Google Analytics