【Struts2】ui标签之form标签及数据回显

转:https://blog.csdn.net/damogu_arthur/article/details/46907667
ui标签:用在jsp页面用于回显数据的标签,这些标签是由框架定义的,用来替代原生的标签!
ui标签有:

<s:textfield name="xxx"></s:textfield>
<s:password name="xxx" showPassword="trus"></s:password>
<s:select name="xxx" list="xx" listKey=..  listValue=..  headerValue=..><s/select>
<s:checkboxlist list= "#pList" name="pid"  listKey="pid"  listValue="pname" ></s:checkboxlist>

需要回显的数据要放在valueStack中,可以放在map栈中,也可以放在对象栈中;
放对象栈中有两种情况:
一是将数据封装成bean,将bean放在对象栈中;
二是给action设置属性,action的属性就在对象栈中;

1.Action中放入数据:

 public class UIAction extends ActionSupport{
     private String username;
     private String password;
     public String getUsername() {
           return username ;
     }

     public void setUsername(String username) {
           this.username = username;
     }

     public String getPassword() {
           return password ;
     }

     public void setPassword(String password) {
           this.password = password;
     }
     /**
      * 1.在表单中回显数据:数据位于对象栈中,直接根据表单元素的name数据就可以回显!
      *        用户名:<s:textfield name="username"></s:textfield><br/>
              密码:<s:password name="password" showPassword="true"></s:password><br/>
      * @return
      */
     public String showDataFromObjStack(){
          User user = new User();
          user.setPassword( "aaa");
          user.setUsername( "bbb");
          ActionContext. getContext().getValueStack().push(user);
           return "user_objstack" ;
     }
     /**
      * 从map栈中回显数据,s:textfield的value属性不能直接跟 ognl表达式,所以需要加%{ ognl表达式}
      *
      *        用户名:<s:textfield name=" username" value="%{#user.username}"></s:textfield><br/>
              密码:  <s:password name="password" showPassword="true" value="%{#user.password}"></s:password><br/>
      * @return
      *
      */
     public String showDataFromMap(){
          User user = new User();
          user.setPassword( "111");
          user.setUsername( "zhangsan");
          ActionContext. getContext().put("user", user);
           return "user_map" ;
     }
     /**
      * Action中的属性位于对象栈中,在回显时可以直接使用value来回显:
      *        用户名:<s:textfield name="username"></s:textfield><br/>
              密码:  <s:password name="password" showPassword="true" ></s:password><br/>
      * @return
      */
     public String showDataFromActionProperty(){
           this.username = "lisi" ;
           this.password = "asfd" ;
           return "user_actionproperty" ;
     }

     /**
      * 使用s:select标签来显示下拉选择框,必须有list属性;
      * jsp:选择省份:<s:select name=" pid" list="#pList" listKey="pid" listValue="pname" headerKey="" headerValue="请选择省份"></s:select> <br/>
      * 翻译后的代码:
      *  选择省份:
              <select id="uiAction_form_action_pid" name="pid">
                   <option value="">请选择省份 </option>
                   <option value="1">北京市 </option>
                   <option value="2">上海市 </option>
                   <option value="3">重庆市 </option>
               </select>
      * @return
      */
     public String putDataToSelect(){
          List<Privice> pList = new ArrayList<Privice>();
          Privice privice1 = new Privice();
          privice1.setPid(1L);
          privice1.setPname( "北京市");

          Privice privice2 = new Privice();
          privice2.setPid(2L);
          privice2.setPname( "上海市");

          Privice privice3 = new Privice();
          privice3.setPid(3L);
          privice3.setPname( "重庆市");

          pList.add(privice1);
          pList.add(privice2);
          pList.add(privice3);

           //放在map栈中;
          ActionContext. getContext().put("pList", pList);

           return "select_map" ;
     }
}

2.配置文件:struts-ui.xml:

<?xml version= "1.0" encoding ="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
     <package name="ui"  namespace="/" extends="struts-default" >
           <action name= "uiAction_*" method ="{1}" class="cn.itheima03.struts2.ui.UIAction" >
               <result name="user_objstack" >ui/ui.jsp</ result>
               <result name= "user_map">ui/ui.jsp </result>
               <result name="user_actionproperty" >ui/ui.jsp</ result>
               <result name="select_map" >ui/ui.jsp</ result>
           </action>
     </package >
</struts>

2.jsp页面利用struts标签回显数据:
在jsp页面引用ui标签时,要加上:

<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page language="java" import= "java.util.*" pageEncoding="UTF-8" %>
<%@ taglib uri="/struts-tags" prefix= "s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body >
           <s:form action= "uiAction_form.action">
               <!--
                   cssClass相当于 html标签中的class
               -->

              用户名: <s:textfield name="username" ></s:textfield>< br/>
              密码:  <s:password name= "password" showPassword="true" ></s:password ><br/>
               <!--
                   list是select填充数据的来源
                   list后面能直接跟 ognl表达式
                   listKey是option中value的值
                   listValue是要显示的值
                   headerValue顶部要显示的内容
               -->

               <!-- s:select标签 -->
              选择省份: <s:select name= "pid" list="#pList" listKey="pid" listValue="pname" headerKey="" headerValue= "请选择省份" ></s:select>< br/>

               <!-- checkboxlist 标签 -->
              省份: <s:checkboxlist list= "#pList" name="pid" listKey="pid" listValue="pname" ></s:checkboxlist>
           </s:form>
  </body >
</html>

效果图:

翻译过后的源代码:

<body>
<form id="uiAction_form_action" method="post" action="/itheima03_struts2/uiAction_form.action" name="uiAction_form_action">
用户名:
<input id="uiAction_form_action_username" type="text" value="" name="username">
<br>
密码:
<input id="uiAction_form_action_password" type="password" value="" name="password">
<br>
选择省份:
<select id="uiAction_form_action_pid" name="pid">
<option value="">请选择省份</option>
<option value="1">北京市</option>
<option value="2">上海市</option>
<option value="3">重庆市</option>
</select>
<br>
  省份:
<input id="pid-1" type="checkbox" value="1" name="pid">
<label class="checkboxLabel" for="pid-1">北京市</label>
<input id="pid-2" type="checkbox" value="2" name="pid">
<label class="checkboxLabel" for="pid-2">上海市</label>
<input id="pid-3" type="checkbox" value="3" name="pid">
<label class="checkboxLabel" for="pid-3">重庆市</label>
<input id="__multiselect_uiAction_form_action_pid" type="hidden" value="" name="__multiselect_pid">
</form>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值