Struts2 在页面定义变量 s:set标签

转载 2012年03月27日 11:05:12

网上很多关于S:set标签的用法,例如:

<s:set name="test" value="'测试'" />
<s:property value="#test" />

 

最近在项目开发中,需要一个把一个List中的id,循环输出到一个js里面。测试了半天,得到如下代码。

(假设test这个list中有个ID字段,值为1 2 3 4)

<script>
var aa="";
<s:set name="ttt" value="-1" />
<s:iterator id="epslist" value="test" status="index">
 <s:set name="ttt" value="#ttt+','+#epslist.id" />
</s:iterator>
aa="<s:property value="#ttt" />";
</script>

 

循环之后aa值="-1,1,2,3,4"。(这里根据自己的需要把红色部分的value改为自己需要的,然后在用js操作该aa的值)

 

注意红色部分,如果删除掉红色部分代码,aa值为""(不是null).

如果把红色部分代码改为<s:set name="ttt" value="" /> 或者<s:set name="ttt" />

 

结果是:

第一种情况 aa="null,1,2,3,4";

第二种情况 aa=**.**.**.**@***,1,2,3,4;

遇到过set设置了字符串不能显示的情况例如

<s:set name="ttt" value="abc" />

<s:property value="#ttt"/>按道理说可以显示了啊。其实暗藏玄机,就是这时候他把abc当成变量来取值,而不是看成字符串。所以要想看成字符串必须加单引号。<s:set name="ttt" value="’abc‘" />

 

 

set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放入指定范围内
name 是必填属性,是重新生成的新变量的名字
scope 可选属性,指定新变量被放置的范围,可以接受application,session,request,page,action 这5个值 没有指定默认是Stack Context中
value 可选属性,指定变量的值 如果没有指定,使用ValueStack栈顶的值赋给新变量
id 可选属性,指定新元素的引用ID

下面是个例子:

<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
将p放入application范围内。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/> <br>
<s:property value="#attr.test.age"/> <br>
将p放入session范围内。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name} <br>

 

赋的值如果是一个表达式,基本都会,我看了楼上的各种回答,清一色的都是赋的表达式,都没有赋常量的例子,
我现在也补充一个,如果value中要赋的是常量,如果直接
<s:set name="page2" value="listMaterialEnt"  scope="session"> </s:set>
这样在页面中是访问不到listMaterialEnt这个字符串,怎么样才能赋这个字符串常量值呢?加个单引号就搞定,这个也是我研究了半天才研究出来,如下:
<s:set name="page2" value="'listMaterialEnt'"  scope="session"> </s:set>


jsp中jstl标签库里面变量设置基础教程

在前面的几篇文章里面,我们基本上把数据库显示的方法学习了一遍,只要能使用好那几个方法,差不多就能在页面很灵活的显示你要显示的信息,但是我们还不知道怎么给变量设置,其实在jstl里面,给变量设置是比较的...
  • hunannanhu
  • hunannanhu
  • 2015年05月22日 14:43
  • 2735

Struts标签入门

Struts标签入门 基本概述     Struts 是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提...
  • q547550831
  • q547550831
  • 2016年01月26日 12:50
  • 1606

Struts2 标签定义变量及for循环

1. struts2 标签 设置变量2. struts2 标签 List iterator 循环输出
  • hanshileiai
  • hanshileiai
  • 2015年07月04日 15:50
  • 3535

Struts标记库

  Struts标记库 JSP视窗组件所使用的struts标记库由四类标记组成: 2. Bean标记:用来在JSP页中管理bean 3. 逻辑标记:用来在JSP页中控制流程 4. HTML标记:用来生...
  • mxstar
  • mxstar
  • 2004年07月17日 20:07
  • 900

Struts2标签使用原理解疑

在笔者下载的Struts2的包中,读者可以在/lib下找到struts2-core-2.0.11.1.jar包,解压该包在其根目录下的 /META-INF文件夹下可以看到一个名字为“struts-ta...
  • Baple
  • Baple
  • 2013年11月27日 13:04
  • 1150

Struts标签库详解,非常好的Struts标签详解

本文转自:http://hi.baidu.com/xzkcz/blog/item/5cf9f91f01beb9f4e0fe0bd4.html 作者:xzkcz Struts提供了五个标签库...
  • sunqing0316
  • sunqing0316
  • 2015年09月19日 14:08
  • 9566

Struts标签库详解

Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。  标签库 ...
  • zengbo0710
  • zengbo0710
  • 2007年03月18日 12:32
  • 1201

Struts2与freemarker自定义标签

包目录视图 领域模型层User.java package com.xuzengqiang.project.domain; public class User { private String u...
  • xuzengqiang2
  • xuzengqiang2
  • 2014年03月13日 16:58
  • 650

Struts标签基本知识

Struts标签基本知识1.普通标签:控制执行的流程1.1 控制标签:实现分支、循环等流程控制if elseif else append generator iterator merge sort s...
  • benhuo931115
  • benhuo931115
  • 2017年01月12日 15:27
  • 258

Struts2标签<1>-HTML标签与struts2标签区别

一)struts2中的HTML标签与用原始的hteml标签哪个更好?有什么区别?为什么要使用上struts2标签? 1)应该根据实际情况的选取,当你的标签中出现了action返回的参数,选用stru...
  • xiu2016
  • xiu2016
  • 2016年10月14日 14:08
  • 1172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2 在页面定义变量 s:set标签
举报原因:
原因补充:

(最多只允许输入30个字)