Strus2的新表单标志的使用2011-04-13maxStruts2为大家提供了不少常用的很酷的表单标志,简化了我们程序员的工作。不过,由 于这些都是新标志,大家可能在使用上还存在不少疑问。本文将就朋友们的回复、留言或 Email上的问题,分别对这些酷标志进行讲述。 表单标志使用小技巧Struts 2的表单标志在输出(render)HTML时,使用了模板的概念,增加了复杂性(因为 它不像Struts 1.x的表单标志,它通常都是一个标志对应HTML的一个元素),因此大家在使 用时,需要一些技巧:Struts 2的UI标志的表单标志默认是以表格布局,按钮是右对齐的。如果你不喜欢此风格 ,你可以简单地将<s:form />标志的“theme”属性设为“simple”,然后用以往的做 法自已布局表单元素(注意:此法有利有弊,弊就是当你将“theme”属性设为“simple”时 ,表单标志以最简单方式输出HTML,所以你可能失去一些默认输出提供的便利,如:友好的 错误信息的显示,或客户端的表单验证等)。当然更好的做法是通过CSS或自定义主题 (theme)然后应用到整个应用程序,这样可以获得一致的页面风格,加强用户体验(我会在 以后的文章对此进行讲解);当你在页面上加入某些标志(如:<s:doubleselect />等)时,应该通过action来 访问页面,而不是通过*.jsp的URL直接访问。下面我将分别对这些标志进行讲述:1、<s:checkboxlist />大家对<s:checkboxlist />的最大的疑问可能是:“如何在默认情况下,选中某些 checkbox?”答案其实很简单,只需要将其“value”属性设为你的要选中的值,如以代码所示:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Struts 2 Cool Tags - <s:checkboxlist/ ></title>
<s:head />
</head>
<body>
<h2><s:checkboxlist/></h2>
<s:form action="Store" >
<s:checkboxlist name="skills1"
label="Skills 1"
list="{ "Java", ".Net", "RoR", "PHP" }"
value="{ "Java", ".Net" }" />
<s:checkboxlist name="skills2"
label="Skills 2"
list="#{ 1:"Java", 2: ".Net", 3: "RoR", 4: "PHP" }"
listKey="key"
listValue="value"
value="{ 1, 2, 3 }"/>
</s:form>
</body>
</html>清单1 WebContent/checkboxlist.jsp分布运行应用程序,在浏览器中键入: http://localhost:8080/Struts2_CoolTags/checkboxlist.jsp,出现如下图所示页面: