文章摘要
1、Struts 2 url标签
2、Struts 2表单标签
3、Struts 2属性标签
英文文献请点击此处~
在Hello World中,我们添加了一个Struts 2 url标签index.jsp
来创建一个超链接hello.action。
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
</body>
要在视图页面上使用Struts 2标签,您必须包含一个标签库指令。通常,taglib伪指令是<%@ taglib prefix="s" uri="/struts-tags" %\>
。所以所有Struts 2标签的前缀将为“s”。如果要实际读取Struts 2标签TLD文件,您可以在Struts 2核心jar的“META-INF”文件夹中找到它。
接下来,我们在Hello World的基础上,增加标签的使用案例。
一、Struts 2 url标签
Struts 2标签的一个用途是创建到其他Web资源的链接,特别是本地应用程序中的其他资源。
虽然HTML为创建超链接提供了一个简单的标签,但HTML标签通常需要我们包含重复、冗余信息。HTML标签也不容易访问框架提供的动态数据。
- 1、Web应用程序中非常常见的用例是链接到其他页面。
在Hello World中,我们hello.action在index.jsp使用Struts 2的URL标签内添加了一个链接。
<p><a href="<s:url action='hello'/>">Hello World</a></p>
- 2、使用标签,添加参数s:param。
<s:url action="hello" var="helloLink">
<s:param name="userName">Bruce Phillips</s:param>
</s:url>
<p><a href="${helloLink}">Hello Bruce Phillips</a></p>
二、Struts 2表单标签
大多数应用程序将使用多个数据输入表单。Struts 2标签使得创建输入表单变得容易。
每个Struts 2表单标签都有许多属性来模拟正常的HTML表单标签属性。
要创建窗体的外壳,请使用Struts 2表单标签。action属性设置要提交的操作名称。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<p>Get your own personal hello by filling out and submitting this form.</p>
<s:form action="hello">
<s:textfield name="userName" label="Your name" />
<s:submit value="Submit" />
</s:form>
</body>
</html>
表单标签,在浏览时,浏览页面:
页面中的struts 标签,会转化为html:
<form id="hello" name="hello" action="/using-tags/hello.action;jsessionid=6233ot11na1mtshbr292hu1w" method="post">
<table class="wwFormTable">
<tr>
<td class="tdLabel"><label for="hello_userName" class="label">Your name:</label></td>
<td class="tdInput"><input type="text" name="userName" value="" id="hello_userName"/></td>
</tr>
<tr>
<td colspan="2">
<div class="formButton">
<input type="submit" value="Submit" id="hello_0"/>
</div>
</td>
</tr>
</table>
</form>
三、Struts 2属性标签
- 1、属性标签:
<s:property value="messageStore.message" />
属性标签最常见的用法是通过调用公共get方法(Action类)“获取”返回的值,然后将该值包含在返回给浏览器的HTML中。
如Hello World教程中所讨论的,messageStore.message指示Struts 2首先调用getMessageStore Action类的方法的值。该方法调用返回一个MessageStore对象。该.message部分指示Struts 2调用MessageStore对象的getMessage方法。该getMessage方法返回一个String,该字符串将包含在返回给浏览器的HTML中。
Struts 2属性标签的一个非常有用的功能是它会自动将最常见的数据类型(int,double,boolean)转换为其等效字符串。为了演示此功能,我们将一个静态int变量添加到类中HelloWorldAction。
HelloWorldAction.java
package wanghailu.apache.struts.action;
import com.opensymphony.xwork2.ActionSupport;
import wanghailu.apache.struts.model.MessageStore;
public class HelloWorldAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private MessageStore messageStore;
private static int helloCount = 0;
public int getHelloCount() {
return helloCount;
}
public String execute() throws Exception {
messageStore = new MessageStore() ;
helloCount++;
return SUCCESS;
}
public MessageStore getMessageStore() {
return messageStore;
}
}
每次调用execute方法时,我们将增加helloCount1.所以将这个代码添加到类的execute方法中HelloWorldAction.
每当用户单击页面index.jsp上的链接之一(或提交表单)时,将运行execute类的方法,HelloWorldAction并将静态字段helloCount增加1。
要包含helloCount属性的值,HelloWorld.jsp我们可以使用Struts 2属性标记。
- 2、使用属性标签显示helloCount值:
<p>I've said hello <s:property value="helloCount" /> times!</p>
所以即使该getHelloCount方法返回一个整数类型,Struts 2将其转换为String类型并将其放入p标签的正文中。
请注意,即使helloCount是静态字段,get方法helloCount也不是静态的。对于Struts 2调用getHelloCount方法来获取值helloCount,该getHelloCount方法不能是静态的。
如果get方法返回的值是一个对象,那么属性标签将导致Struts 2调用该对象的toString方法。当然,您应该始终toString在模型类中覆盖Class Object的方法。将以下toString方法添加到MessageStore类中:
public String toString() {
return message + " (from toString)";
}
- 3、使用属性调用toString:
<p><s:property value="messageStore" /></p>
由于getMessageStore的HelloWorldAction类返回MessageStore对象,搭片2将调用toString类的方法MessageStore。该toString方法返回的字符串将显示在浏览器中。
网友评论