s2 标签的使用

s2标签库不依赖于任何表现层技术,strtus2提供的大部分标签,可以在各种表现层技术中使用。

使用s2之前需要用在页面中引入s2标签库:

<%@ taglib uri="/struts-tags" prefix="s"%>

这需要把struts2相关的jar包  放在工程的WEB-INF/lib/下面 .如:

struts2-core-2.0.11.1.jar

ognl-2.6.11.jar

oro-2.0.8.jar

freemarker-2.3.8.jar

struts-core-1.3.5.jar


1、<s:property>

<s:property value="#request.plType.plName">

 上面代码得到的是一个动态值,是request中key为plType所对应的对象, 这个对象里面有一个属性,属性名为plName

<select name="myList">
  <s:iterator  value="#request.plType">
      <option value="plID">
              <s:property value="plName"/>
      </option>
  </s:iterator>
</select>
这实现了一个下拉框

解释:

<s:iterator>里的value属性表示要迭代的容器,这有点像foreach循环(for(int  i:int [] a)   a表示要循环的容器, 这是一个int型数组,前面的i表示数组中的元素)

#request明确表示,在request中搜索  键值是   plType的对象,我们假设  plType对应的是一个List<Subplate>

我理解迭代就是把容器中的内容,一个一个输出来,做一个遍历,这里plType对应的容器有多少个元素,页面就有多少个<option>


我想实现的功能是选择不同的项,传回不同的值 , 但是上面的写法是错误的

<select>  <option></option>  </select>  是固定组合, 用来实现下拉框

option的子节点就是显示在页面上的内容, 上面代码中,子节点是动态生成的,他表示#request.plType容器里装的一条元素 的  plName属性。

在s2标签中的value属性值通常表示一个key,而不是他本来的字符串

option的value属性就是你选择一项所对应的值,这里写成plID,其实所有选项带回的值都是plID,这是静态的, 正确的写法是

<select name="myList">
  <s:iterator  value="#request.plType">
      <option value="<s:property value='plID'/>">
              <s:property value="plName"/>
      </option>
  </s:iterator>
</select>

提交表单时, 按照  myList --->   <s:property value='plID'/> 方式传给服务器进行解析。 


表单元素的name属性很重要,一般做提交是,每个表单元素都是像上面那样以键值对的形式传给服务器,     name就是KEY










你可能感兴趣的:(s2 标签的使用)