Struts2标签之UI标签

Struts2UI标签之表单标签:

  • Struts2中的表单标签还是比较好用的,但是也存在不好的地方。例如主题部分一点也不灵活,所以没什么人使用它提供的主题。
  • Struts2标签的优势:
    • 简化代码
    • 自动数据回显。
    • 指定主题样式(个人感觉是缺点。)
  • 表单标签入门:首先我们来对比一下普通的HTML表单和struts2提供的表单的区别:
    <form action="<c:url value='/user/LoginAction.action'/>" method="post">
      用户名 <input type="text" name="username"/><br/>
      密 码 <input type="password" name="password"/><br/>
      <input type="submit" value="登录"/>
    </form>
    <hr/>
    <s:form action="LoginAction" namespace="/user">
    	<s:textfield name="username" label="用户名" />
    	<s:password name="password" label="密 码" />
    	<s:submit value="登录" />
    </s:form>
    

  • 下面是前面两个代码通过查看页面源码的内容:
    <form action="/ognl/user/LoginAction.action" method="post">
      用户名 <input type="text" name="username"/><br/>
      密 码 <input type="password" name="password"/><br/>
      <input type="submit" value="登录"/>
    </form>
    
    <hr/>
    
    <form id="LoginAction" name="LoginAction" action="/ognl/user/LoginAction.action" method="post">
    <table class="wwFormTable">
    	<tr>
        <td class="tdLabel"><label for="LoginAction_username" class="label">用户名:</label></td>
        <td
    ><input type="text" name="username" value="" id="LoginAction_username"/></td>
    </tr>
     
    	<tr>
        <td class="tdLabel"><label for="LoginAction_password" class="label">密 码:</label></td>
        <td
    ><input type="password" name="password" id="LoginAction_password"/></td>
    </tr>
     
    	<tr>
        <td colspan="2"><div align="right"><input type="submit" id="LoginAction_0" value="登录"/>
    </div></td>
    </tr>
    
    </table></form>
    

  • 通过上面可以看出:
    • <s:form/>
      • 通过action和namespace两部分来指定请求路径,action直接给struts.xml配置文件中<action/>元素的name值即可,无需加后缀名。
      • method默认为post。
      • 会自动添加id属性,值与action的属性值相同。
      • 真个表单生成在table中。
    • <s:textfield/>
      • 对应<input type="text"/>标签。
      • 通过lable来生成<lable/>标签。
    • <s:password/>
      • 对应<input type="password"/>标签。
      • 通过lable来生成<lable/>标签。
    • <s:submit/>
      • 对于<input type="submit"/>标签。

Struts2表单标签主题:

  • 我们发现,整个表单都会在<table/>中生成,这也就说明无需每个为每个表单项中添加<br/>。因为在表格中无需再换行。
  • 生成的表格中因为<s:form/>标签的theme属性的默认值为xhtml,它表示一种样式。这个主题样式由Freemarker模板完成。如果你不希望使用这个xhtml主题,那么有下列三种方法来修改主题:
    • <s:textfield/>的theme属性指定为simple,那么这个表单项就使用简单主题。
    • 在<s:form/>的theme属性指定为simple,那么这个表单都使用简单主题。
    • 设置struts.ui.theme常量为simple,那么所有的表单的默认主题都为simple。在struts.xml文件中配置。
    • 当表单设置为theme="simple"后:
      <s:form action="LoginAction" namespace="/user" theme="simple">
      	<s:textfield name="username" label="用户名" />
      	<s:password name="password" label="密 码" />
      	<s:submit value="登录" />
      </s:form>
      

  • 源码的形式:
    <form id="LoginAction" name="LoginAction" action="/ognl/user/LoginAction.action" method="post">
    	<input type="text" name="username" value="" id="LoginAction_username"/>
    	<input type="password" name="password" id="LoginAction_password"/>
    	<input type="submit" id="LoginAction_0" value="登录"/>
    </form>
    
    这时没有表格来格式化表单,而且也不能生成<lable>,这说明样式都要自来来设定。好处是你重新获得了自由,坏处是一切都要靠自己了。
  • 自动回显功能:
    • 我们知道,当表单提交后,在返回到表单页面时,HTML标签不可能帮我们回显数据。而struts2的表单标签可以做到这一点。原因是当前Action的值就在栈顶,而表单会从值栈中获数据回显。

表单标签之选择性标签:

  • <s:radio/>标签的使用:
    • 表单标签中简化比较大的标签可以不再写循环了,还可以自动回显。我们都知道在下拉表,单选,复选中,手动回显是比较麻烦的事。但是使用struts2标签后就方便很多。<s:radio list="#{'male':'男','female':'女'}" name="gender"/>这是一个map集合的表示。
    • List集合的表示如下:<s:radio list="{'男','女'}" name="gender"/>这时候显示值和实际值相同。
  • <s:checkboxlist/>标签的使用:
    • 这个东西也非常的好用,以下能显示很多复选框。而且能自动回显。示例如下:<s:checkboxlist list="{'看电影', '旅游', '健身', '购物', '睡觉', '读书'}" name="hobby" value="hobby.split(',\\\\s*')"/> value="hobby.split(',\\\\s*')"/>。后面的value的值是使用切割的技术实现回显。
  • <s:select>标签的使用:
    • 下拉列表与上面标签也一样,都是选择性的。使用它们无需循环。如下:<s:select name="city" list="#{'bj':'北京','sh':'上海','gz':'广州'}"/>
  • 这里只介绍了常用的标签和标签的属性,当然上面的标都有其他的参数来实现更加复杂的逻辑处理,具体可以参考上面给出的文档。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值