| |
12.4.2.1 创建视图(续)
在Tag Libraries中选择Struts1.1框架的标签库struts-bean, strut-html, struts-logic, 和struts-template四项。这样Jbuilder会在生成的JSP页面中添加这些标签库。
点击Finish,Jbuilder生成一个包含上面四个标签库的JSP页面,点击index.jsp页面的Source标签可以看到:<%@
taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
index.jsp中含有两个变量bookName和queryResult,具体代码如下:
index.jsp:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ page contentType="text/html; charset=gb2312" %>
<html:html>
<head>
<title>图书查询系统</title>
</head>
<body>
<h1 align="center">图书查询系统</h1>
<h2 align="center">请输入查询信息:</h2>
<html:form method="POST" action="/queryBookAction">
<p align="center"><html:text
property="bookName" /></p>
<p align="center"><html:submit property="submit" value="提交"
/></p>
<p align="center">查询结果:<html:text
property="queryResult" size="25"/></p>
</html:form>
</body>
</html:html>
index.jsp中的<html:form>集合了两个数据bookName和queryResult。<html:form>是Struts特有的标签,它等价于传统HTML语言中的<form>标签。<html:form>中的属性action是指提交该form的url。该jsp页面中还含有两个HTML标签,分别是<html:text>和<html:submit>。<html:text>元素相当于HTML中的文本输入标签(input text),
该元素的property属性值等于相应的ActionForm类中的数据成员的名称。<html:submit>效仿了HTML中的Submit按钮。使用这些Struts标签的前提是部署描述符web.xml文件中必须添加了引用struts-html.tld应用的内容。该tld文件描述了Struts中的所有HTML标签库。Jbuilder会在web.xml文件中自动添加这些内容,不需要读者自己编辑该文件。下面是web.xml文件中的相关内容:
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
按照刚才的代码创建成功了index.jsp页面,可以看到如下图所示的效果。
 图9 index.jsp效果
注意,用Jbuilder创建含有中文的JSP页面时,可能会遇到汉字被显示成乱码的问题,解决方法有两个:
第一,建工程的第三步Specify general project settings中设置Encoding为gb2312。
第二,如果你已经创建了一个工程,可以点击Project| Project properties…菜单,在Project properties对话框中选择General标签,然后将Encoding设置为gb2312。这样生成的页面就支持中文了。
Jbuilder提供了将普通JSP文件转换成符合Struts标准的JSP页面的工具。使用方法是这样的:在Project Pane中选择要转换的JSP文件,右键点击该文件,选择Convert to Struts选项,进入Struts Conversion Wizard,按照提示一步一步进行即可。
12.4.2.2 建模型ActionForm
ActionForm是Struts框架中的模型部分。简单的说,ActionForm是一个包含多个数据成员的Java Bean。视图index.jsp中的提交时,Struts框架将index.jsp中输入的数据值与ActionForm中的数据成员一一匹配。Struts框架使用JavaBean映射数据成员,这就要求ActionForm的访问器编写必须遵循JavaBean的标准命名规则。
具体的说,JavaBean中的每个数据成员,都必须有获取数据成员值和设置数据成员值的一对函数。这对函数叫做该数据成员的访问器,他们以set和get开头,后面紧跟数据成员的名字,且数据成员第一个字母大写,所有的访问器定义都要遵循这个命名规则。例如,对于数据成员A有如下相关代码:
private String A;
public void setA(String symbol);
public String getA();
在我们的例子中, ActionForm含有两个数据成员,分别是bookName和queryResult,这两个数据成员和视图组件index.jsp中的两个参数bookName和queryResult相对应。
Jbuilder提供了建立ActionForm类的向导。下面就学习用Jbuilder创建一个名字为queryBookForm的ActionForm类。
点击File|New…菜单项,调出Object Gallery,选择Web标签,点击ActionForm。将ActionForm的名称修改为queryBookForm,其他地方保持默认值不变。这里WebApp指定该queryBookForm所在的Web应用名。Struts config是指的是本queryBookForm使用的配置文件struts-config.xml。该文件不需要用户自己创建,新建一个Struts框架的Web应用时Jbuilder会自动创建该配置文件。Pakage指定该queryBookForm所在的包,Base class中的org.apache.struts.action.ActionForm是Struts实现的一个ActionForm的基类,任何ActionForm都必须继承这个类。
 图10 新建ActionForm向导
点击Next按钮,进入下一步Field Definition for ActionForm。在这里可以定义ActionForm中的数据成员。方法有两种:
第一种方法是,点击Add from JSP…按钮,然后选择相应的jsp文件,这里我们选择前面创建的index.jsp,JBuilder会将index.jsp中含有的所有变量加入queryBookForm中。
第二种方法是点击Add…按钮进行添加,操作方法很简单,这里不再赘述。
 图11 为ActionForm添加数据成员
|
|