Struts 2公式ドキュメント学習-Processing Forms
22324 ワード
Reference:《 ST2.NO.0005 struts2.0公式サイトドキュメント学習ノートの5-Processing Forms 》《 Struts 2のブロック(一) 》
ダイレクトコード:登録プロセス
PersonBean.java
Register.jsp
私が理解する過程:
JSPファイルのというコードは、まずRegisterActionでpersonBeanというオブジェクトを検索し、actionのgetPersonBean()メソッドを呼び出します.personBeanはnullで、nullと発見されたときにsetPersonBeanが呼び出され、setPersonBean()のパラメータを使用するとフレームワークが自動的にPersonBeanクラスのデフォルトの構造方法でこのオブジェクトが作成され(このときpersonBeanはnullではありませんがそのすべての値、firstNameなどはnull)、そしてgetPersonBeanが呼び出されてnullではないpersonBeanオブジェクトが得られます.次はpersonBeanを検索します.firstNameです.personBeanのsetFisrtName()を呼び出して値を割り当てます.ここはブレークポイントを設定するのを忘れましたが、personBeanと同じようにgetFirstName()を呼び出してnull(nullでも後ろのsetterを呼び出すと思います)と発見し、setFirstName()を呼び出して女の子に値を与えたと想像できます.これらはすべてexecute()メソッドが実行される前に発生しますよ!Thanks to Struts 2のデフォルトのブロッキング.
登録が成功するとjsp
struts.xmlクリップ
Thankyou.jsp
この中には<:property value="personBean"/>がgetでactionの中のperseonBeanオブジェクト(すでに値があるよ)を得てtoString()が出力されています
以上の理解に誤りがあれば指摘したい
ダイレクトコード:登録プロセス
PersonBean.java
1: package test;
2:
3: public class PersonBean implements java.io.Serializable {
4: private static final long serialVersionUID = -5007279129818462704L;
5: private String firstName;
6: private String lastName;
7: private String email;
8: private int age;
9:
10: public String getFirstName() {
11: return firstName;
12: }
13:
14: public void setFirstName(String firstName) {
15: this.firstName = firstName;
16: }
17:
18: public String getLastName() {
19: return lastName;
20: }
21:
22: public void setLastName(String lastName) {
23: this.lastName = lastName;
24: }
25:
26: public String getEmail() {
27: return email;
28: }
29:
30: public void setEmail(String email) {
31: this.email = email;
32: }
33:
34: public int getAge() {
35: return age;
36: }
37:
38: public void setAge(int age) {
39: this.age = age;
40: }
41:
42: public String toString() {
43: return "First Name: " + getFirstName() + " Last Name: "
44: + getLastName() + " Email: " + getEmail() + " Age: "
45: + getAge();
46: }
47: }
RegisterAction.java
1: package test;
2:
3: import com.opensymphony.xwork2.ActionSupport;
4:
5: public class RegisterAction extends ActionSupport {
6:
7: private static final long serialVersionUID = -726538404572102944L;
8: private PersonBean personBean;
9:
10: public String execute() {
11: /* Call other Service class to store personBean's state in database */
12: return SUCCESS;
13: }
14:
15: public void setPersonBean(PersonBean personBean) {
16: this.personBean = personBean;
17: }
18:
19: public PersonBean getPersonBean() {
20: return this.personBean;
21: }
22: }
Register.jsp
1: <%@ page language="java" contentType="text/html; charset=utf-8"
2: pageEncoding="utf-8"%>
3: <%@ taglib prefix="s" uri="/struts-tags"%>
4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5: <html>
6: <head>
7: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
8: <title>register</title>
9: </head>
10: <body>
11: <s:form action="register">
12: <s:textfield name="personBean.firstName" label="First name" />
13: <s:textfield name="personBean.lastName" label="Last name" />
14: <s:textfield name="personBean.email" label="Email" />
15: <s:textfield name="personBean.age" label="Age" />
16: <s:submit />
17: </s:form>
18: </body>
19: </html>
私が理解する過程:
JSPファイルの
登録が成功するとjsp
struts.xmlクリップ
1: <action name="register" class="test.RegisterAction"
2: method="execute">
3: <result name="success">/test/Thankyou.jsp</result>
4: </action>
Thankyou.jsp
1: <%@ page language="java" contentType="text/html; charset=UTF-8"
2: pageEncoding="UTF-8"%>
3: <%@taglib prefix='s' uri='/struts-tags'%>
4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5: <html>
6: <head>
7: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8: <title>Registration Successful</title>
9: </head>
10: <body>
11: <h3>Thank you for registering for a prize.</h3>
12: <p>
13: Your registration information:
14: <s:property value="personBean" />
15: </p>
16: <p>
17: <a href="<s:url action='index' />"<Return to home page</a>.
18: </p>
19: </body>
20: </html>
この中には<:property value="personBean"/>がgetでactionの中のperseonBeanオブジェクト(すでに値があるよ)を得てtoString()が出力されています
以上の理解に誤りがあれば指摘したい