Struts1标签库

1、Struts1标签库

1.1 Struts的三大标签库

     Struts实际上包含了4个标签库:beanlogichtmltiles

     bean:用来在属性范围中定义或取得属性的,同时可以读取资源文件信息

     logic:替代JSTL中的判断和循环

     html:替代页面表单,完成自动回填以及错误信息的显示

     tiles:美工标签,用来进行页面布局的调整以及样式管理的。

1.1.1bean标签

     有用的标签:bean:definebean:writebean:message\其他标:bean:sizebean:includebean:resource

      bean:define在页面上临时定义属性的

<center>

<% // request.setAttribute("test","Hello"); %>

<bean:define id="test" value="Hello" toScope="request"></bean:define>

${test}

</center>

  id:属性名/value属性值,类型只能是String或基本数据类型toScope:保存的属性范围

bean:write标签:将属性范围中的属性值显示到页面上EL功能类似 、区别在于这种bean:write安全性高,可以对<>代码进行自动的转义。如果不想转义,可以通过filter属性来进行设置。

<%

User user = new User();

user.setUserid("<font color='red'>Hello</font>");

request.setAttribute("test",user); 

%>

EL: ${test.userid} <br/>

bean:<bean:write name="test" property="userid" filter="true"/>

格式化数据(时间和金额)

<%

request.setAttribute("money",1);  

%>

EL: ${money} <br/> 

bean:<bean:write name="money"  format=",###.00" />

这种格式还可以配置全局的设置,在资源文件中设置。

org.apache.struts.taglib.bean.format.date=yyyy\u5E74MM\u6708dd\u65E5

org.apache.struts.taglib.bean.format.float=,\#\#\#.00

bean:message国际化标签,结合资源文件一起使用。要完成国际化功能,首先需要定义多个资源文件。

每门语言对应一个资源文件,这些资源文件的主文件名都与配置好的资源文件名一致。按照以下格式进行命名 : 主文件名_语言名_国家区域名.properties

例如:ApplicationResources_en_US.properties、ApplicationResources_ja_JP.properties

      ApplicationResources_zh_CN.properties

页面出现的所有文字信息都要在三个资源文件中定义三个版本、页面上改为标签形式

<font color="red"><html:errors/></font>

<html:form action="/regist.do" method="post">

<bean:message key="msg.userid"/>:<html:text property="user.userid"></html:text> <br/>

<bean:message key="msg.password"/>:<html:password property="user.password"></html:password><br/>

<bean:message key="msg.age"/>:<html:text property="user.age"></html:text><br/>

<bean:message key="msg.birthday"/>:<html:text property="birthday"></html:text><br/>

<html:submit><bean:message key="msg.submit"/></html:submit> 

<html:reset><bean:message key="msg.reset"/></html:reset>

</html:form>

页面上加入三个超连接,分别连接三门语言。

请选择使用的语言:

<a href="${pageContext.request.contextPath}/language.do?status=change&lan=zh_CN">中文</a> <a href="${pageContext.request.contextPath}/language.do?status=change&lan=en_US">English</a>

<a href="${pageContext.request.contextPath}/language.do?status=change&lan=ja_JP">日本語</a><br/>

ActionForm中接收参数,并将参数处理成为Locale类型

public ActionErrors validate(ActionMapping mapping,

HttpServletRequest request) {

if ("change".equals(status)) {// 将lan转换为loc类型

String[] str = lan.split("_");

loc = new Locale(str[0], str[1]);

}

return null;

}

Action中加入设置属性的功能

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

LanguageForm languageForm = (LanguageForm) form;

if ("change".equals(languageForm.getStatus())) {// 将Struts当前的语言设置为读取近来接收的语言。 

request.getSession().setAttribute(Globals.LOCALE_KEY, languageForm.getLoc());

return mapping.getInputForward();

}

return null;

}

1.1.2logic标签

     c标签中的判断标签:c:ifc:choosec:whenc:otherwise、判断标签包含以下12个:

     判断存在标签:logic:present(属性存在),logic:notPresent(属性不存在)

     判断等于标签:logic:equal(属性相等),logic:notEqual(属性不相等)

     判断大于小于标签:logic:greaterThan(属性大于),logic:lessThan(属性小于)

     属性大于等于小于等于标签:logic:greaterEqual(大于等于),logic:lessEqual(小于等于)

     属性匹配标签(相当于数据库中的LIKE查询):logic:match(匹配),logic:notMatch(不匹配)

     判断非空标签:logic:empty(属性为空),logic:notEmpty(属性不为空)

     里面比较有用的标签:logic:presentlogic:equal

使用方法参考bean:write

<%

request.setAttribute("test",new java.util.Date());  

%>

<logic:present name="money">

存在

</logic:present>

<logic:notPresent name="money">

不存在

</logic:notPresent>

比较标签需要多一个value属性。

<center>

<%

User user = new User();

user.setUserid("wuzhulin");

request.setAttribute("test",user);  

user = new User();

user.setUserid("wuzhulin");

request.setAttribute("newUser",user);// value表示等号右边的值,name为等号左边的值

%>

<logic:equal value="${newUser.userid}" name="test" property="userid">

相等

</logic:equal>

</center>

value属性中直接写代码表示写一个字符串进去,如果要比较两个属性范围中的属性值,value中要加入EL表达式替代c:forEach可以使用logic:iterate标签,完成循环迭代。

c:forEach var items

<%

List all = new ArrayList();

for (int i = 0; i < 10; i++) {

User user = new User();

user.setUserid("Hello" + i);

user.setBirthday(new Date());

user.setAge(i * i);

all.add(user);

}

request.setAttribute("all", all);

%>

<logic:present name="all">

<%//相当于 c:forEach var="user" items="${all}"

%>

<logic:iterate id="user" name="all">

${user.userid } -- ${user.age } -- <bean:write name="user"

property="birthday" format="yyyy-MM-dd" /><br />

</logic:iterate>

</logic:present>

完成单双行变色功能。

<logic:iterate id="user" name="all" indexId="index">

<span style="background:${index%2==0?"#eeeeee":"#dddddd"};"> ----- ${user.userid } -- ${user.age } -- <bean:write name="user"

property="birthday" format="yyyy-MM-dd" />

</span><br />

</logic:iterate>

1.1.3html标签

<html:form>表单:

普通标签:提交路径必须先加${pageContext.request.contextPath}不自带路径验证功能可以自行定义name属性默认提交方式get

Html标签不需要加上面的${pageContext.request.contextPath},直接以 / xxxxdo开头就可以。自动验证提交路径是否存在不能自行定义name,其name值与要接收参数的ActionFormname一致。默认提交方式是post

一般不需要修改的元素:ButtonsubmitResetimage

改变比较小的组件:Text,passwordTextareahidden使用name作为提交的参数

没有自动回填使用property作为提交的参数名有自动回填功能

特殊的几个组件(单选):Radioselectoption

都可以通过checkedselected设置默认选中如果要显示下拉列表,一般是从数据库中查询出数据,并通过<option>显示选项,需要循环迭代

通过ActionForm的自动回填功能来设置默认选中可以通过<html:options>标签自动将一些数据显示到下拉列表中。

 

多选框:input type=”checkbox”默认选中使用checked、html:checkbox:不支持默认选中、<html:multibox> 支持默认选中,需要通过ActionForm的回填功能

下拉列表范例:

<html:form action="/pages/back/teacher.do">

  选择一级栏目:<html:select property="itemid">

           <html:options collection="allItem" labelProperty="name" property="id"/>

  </html:select>

</html:form>

其中html:options里,collection表示显示的集合的名称,property表示option中value值对应的属性名,labelProperty表示option中显示的文字对应的属性名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值