标签

来源:互联网 发布:qq空间个性域名注册 编辑:程序博客网 时间:2024/05/22 08:59

常用表单标签 

1.用法html用法类似

2.Struts2会自动加入table以对齐

标  签 

说   明 

<s:form>…</s:form> 

表单标签 

<s:textfield>…</s: textfield > 

文本输入框 

<s:password>…</s: password > 

密码输入框 

<s:textarea>…</s: textarea > 

文本域输入框 

<s:radio>…</s: radio > 

单选按钮 

<s:checkbox>…</s: checkbox > 

单选框 

<s:submit /> 

提交标签 

<s:reset /> 

重置标签 

<s:hidden /> 

隐藏域标签 

<!--  checkboxhtml中表示多选 但在此常用来表示是否 单选

    checkbox当不选中时 会向服务器提交一个名为__checkbox_married值为true的参数

    如果选中那么会提交除了上面这个参数之外 另一个married=true的参数

    后台如果只接收到一个参数,那么会将全局变量设置为false,如果接收到两个,那么为true

    所以 struts2提供的checkbox标签会保证后台数据不出错

 -->

<!-- 如果使用htmlcheckbox 那么如果不选中,不会向后台提交参数,如果选中,提交

    那么,actionmarried属性一旦设置初始值为true就会导致数据不一致

     -->

<s:form action="tagTest.action">

    <!-- hidden标签-->

     <s:hidden name="userId"/>

    <!-- 文本输入框 -->

     <s:textfield name="userName" label="请输入用户名"/>

     <s:textfield name="userAge" label="请输入年龄"/>

    <!--密码输入框  -->

     <s:password name="passWord" label="清楚如密码" showPassword="true"/>

    <!-- textArea -->

     <s:textarea name="desc" label="desc"/>

<s:checkbox name="married" label="Married"/>

     <!-- 多选标签 -->

     <s:checkboxlist name="fruits" label="水果" list="#{'orange':'orange','apple':'apple','banana':'banana'}"/>

     <!-- 单选按钮 -->

     <s:radio name="gender" list="#{'man':'man','woman':'woman'}" label="gender"/>

     <!-- 重置标签 重置输入的内容 不重置回显的内容-->

     <s:reset value="reset"></s:reset>

     <s:submit value="submit"></s:submit>

</s:form>

常用通用标签 

名称 

标  签 

说   明 

条件标签 

<s:if>……</s:if>

根据表达式的值,

判断将要执行的内容 

<s:elseif>……</s:elseif>

<s:else>……</s:else>

迭代 

<s:iterator>……</s: iterator > 

用于遍历集合 

<%

     session.setAttribute("qqq","www");

    %>

    <s:if test="userAge > 100">

     !!!!!

     ~~~~<s:property value="userAge"/><br>

     <!-- ognl:struts2特有的解析方式

    <s:radio name="gender" list="#{'man':'man','woman':'woman'}" label="gender"/>

    userName.equals('bbb')

    userAge > 100

    如果是webApi中的内容,那么我们要以<s:property value="#session.qqq"/>

    如果取对象资源,那么直接用属性名即可

     -->

     ognl:<s:property value="#session.qqq"/><br>

     el:${qqq}

    </s:if>

    <s:elseif test="userName.equals('bbb')">

     .....

    </s:elseif>

    <s:else>

     $$$$$

    </s:else>

    

    <%

     ArrayList<Person> persons = new ArrayList<Person>();

     persons.add(new Person("AA"));

     persons.add(new Person("BB"));

     persons.add(new Person("CC"));

     request.setAttribute("persons", persons);

    %>

    <s:iterator value="#request.persons">

     ${name}<br>

    </s:iterator>

表单标签的回显:

<!-- ***回显:struts2提供的标签具有回显功能

  通过struts2映射创建的action对象会自动压入值栈中

  valueStack(值栈)中将action对象的内容读取出来进行回显

  回显的是值栈栈顶的内容,如果栈顶对象没有对应属性,那么会依次向下找,找到就回显,找不到不回显

   -->

执行过程:客户端发送一个请求,通过struts.xml找到处理该请求的action类,并通过映射创建该类对象(根据表单提交的内容对其属性赋值)将其压入值栈中,执行处理请求的方法根据返回值,找到对应result进行跳转,跳转完成后,根据值栈栈顶对象的内容进行回显,如果栈顶对象没有对应属性,那么将继续向下查找

我们也可以手动向值栈中压入一个action对象通过

<s:debug></s:debug>查看值栈中对象存储的情况

值栈压入一个action对象

public String execute(){

System.out.println(this);

//向值栈中push一个新的action对象

TestAction test = new TestAction();

test.userName ="zhangsan";

test.passWord ="aaa";

//ActionContext.getContext().getValueStack()通过action上下文得到值栈

ActionContext.getContext().getValueStack().push(test);

return "success";

}

压入后观察值栈内容为:

Object

Property Name

Property Value

com.struts2.action.TestAction

married

true

desc

null

userId

null

fruits

null

userName

zhangsan

gender

null

userAge

0

passWord

aaa

com.struts2.action.TestAction

married

false

desc

 

userId

 

fruits

[]

userName

qqqqqqqqqq

gender

null

userAge

88888888

passWord

123456

com.opensymphony.xwork2.DefaultTextProvider

texts

null

原创粉丝点击