探索與發現

          研究java技術

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 109 評論 :: 0 Trackbacks

          本地中文化網址

          http://wiki.javascud.org/display/ww2cndoc/Home

          在線文檔

          http://www.opensymphony.com/webwork/wikidocs

          struts 的區別有實現國級化的時候, struts message 只能出現 5 個動態的值

          也就像下面的信息

          Your {0} ticket(s) for flight {1} have been booked.

          The total cost is {2}. Your confirmation number is {3}.

          Your flight leaves at {4} and arrives at {5}

          需要分成兩段才能完成

          <bean:message key="confirmation.msg1"

          arg0="count" arg1="flightNumber" arg2="cost"/>

          <bean:message key="confirmation.msg2"

          arg0="confirmation" arg1="departure" arg2="arrival"/>

          webwork 是無限制的,像上面的可以寫成這樣子

          <ww:text name="confirmation.msg">

          <ww:param value="count"/>

          <ww:param value="flightNumber"/>

          <ww:param value="cost"/>

          <ww:param value="confirmation"/>

          <ww:param value="departure"/>

          <ww:param value="arrival"/>

          </ww:text>

          還有在web.xml里同指定webwork的tld所在位置

          <taglib>

          <taglib-uri>webwork</taglib-uri>

          <taglib-location>
          /WEB-INF/lib/webwork-2.1.7.jar

          </taglib-location>

          </taglib>
          在很多書上都講上面可行,可是我卻報下面的錯...換成下面那種方式就ok了

          org.apache.jasper.JasperException: Unable to initialize TldLocationsCache: null
          也可以指定webwork.tld所在的位置也可以,,如
          /WEB-INF/webwork.tld(webwork.tld拷到這下面來).

          一個簡單的例子
          ?
          import com.opensymphony.xwork.Action;
          public class HelloWorldAction implements Action{
          ??? String greeting;
          ??? public String getGreeting() {
          ??????? return greeting;
          ??? }
          ??? public String execute() throws Exception {
          ??????? greeting = "Hello World!";
          ??????? return SUCCESS;
          ??? }
          }
          實現的action接口里面只有一個方法
          ?
          interface Action {
          String execute() throws Exception;
          }
          greetings.jsp
          <%@ taglib prefix="ww" uri="webwork" %>
          <html>
          <head>
          ??? <title>First WebWork Example</title>
          </head>
          <body>
          <p><ww:property value="greeting"/></p>
          </body>
          </html>
          xwork.xml 放到就用的classpath下面(也就web-inf/classes下面)
          <action name="hello" class="HelloWorldAction">
          <result name="success" type="dispatcher">
          <param name="location">/greetings.jsp</param>
          </result>
          <interceptor-ref name="debugStack"/>
          <interceptor-ref name="defaultStack"/>
          </action>
          還有在web.xml里面加上webwork的一個加載類
          <servlet>
          ??????? <servlet-name>action</servlet-name>
          ??????? <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
          ??? </servlet>
          ??? <servlet-mapping>
          ??????? <servlet-name>action</servlet-name>
          ??????? <url-pattern>*.action</url-pattern>
          ??? </servlet-mapping>
          ActionSupport
          1:提供對錯誤信息的支持
          ? action and field specific errors
          ? field errors are automatically supported by views
          2:國際化的支持
          ? 1 resource bundle per action
          ? pervasive UI support for retrieving messages
          ?--------------------------------------------------------------------------------
          ActionSupport Example:
          import com.opensymphony.xwork.ActionSupport;
          public class HelloWorldAction extends ActionSupport{
          ??? String greeting;
          ??? public void setGreeting(String greeting) {
          ??????? this.greeting = greeting;
          ??? }
          ??? public String getGreeting() {
          ??????? return greeting;
          ??? }
          ??? public String execute() throws Exception {
          ??????? if (greeting.equals("") || greeting == null) {
          ??????????? addFieldError("greeting", getText("greeting"));
          ??????????? return ERROR;
          ??????? }
          ??????? return SUCCESS;
          ??? }
          }
          這里的getText("greeting")的greeting要與HelloWorldAction.properties(放在與HelloWorldAction.class同級目錄下面,名稱也一樣)里的greeting=Enter your greeting please相同
          上面的set.get其實與struts當中的ActionFrom類似..
          <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
          <%@ taglib prefix="ui" uri="webwork" %>
          <html>
          <head>
          ??? <title>First WebWork Example</title>
          </head>
          <body>
          <form action="hello.action" method="post">
          <table>
          ??? <ui:textfield label="歡迎語句" name="greeting"/>
          ??? <ui:submit value="'Submit'"/>
          </table>
          </form>
          </body>
          </html>
          這里的greeting要與HelloWorldActio.java里的屬性一致
          如出現錯誤會顯示在當前頁,
          Enter your greeting please

          如填上內容,就會相應的調用setGreeting()方法的..
          <%@ taglib prefix="ww" uri="webwork" %>
          <html>
          <head>
          ??? <title>First WebWork Example</title>
          </head>
          <body>
          <p><ww:property value="greeting"/></p>
          </body>
          </html>
          把填的內容顯示出來
          在xwork.xml里的<action>
          也相應的變成
          <action name="hello" class="helloWorld.HelloWorldAction">
          ???<result name="success" type="dispatcher">
          ????<param name="location">/greetings.jsp</param>
          ???</result>
          ???<result name="error" type="dispatcher">
          ????????? <param name="location">/index.jsp</param>
          ??????????? </result>
          ??</action>
          ------------------------------------------------------------
          ?
          Model-Driven Actions vs. Field-Driven Actions
          ?
          2 types of Actions possible:
          (1)Field-Drivern上面的例子就是
          (2)ModelDriven
          package helloWorld;
          public class Pet {
          ??? private long id;
          ?private String name;
          ??? public long getId() {
          ??????? return id;
          ??? }
          ??? public void setId(long id) {
          ??????? this.id = id;
          ??? }
          ??? public String getName() {
          ??????? return name;
          ??? }
          ??? public void setName(String name) {
          ??????? this.name = name;
          ??? }
          }
          --
          package helloWorld;
          import com.opensymphony.xwork.*;
          public class AddPetAction extends ActionSupport implements ModelDriven{
          ?Pet pet = new Pet();
          ??? public Object getModel() {
          ??????? return pet;
          ??? }
          ??? protected void doValidation() {
          ??????? if (pet.getId() == 0) {
          ??????????? addFieldError("id", "Please enter in an id number for you new Pet.");
          ??????? }
          ??? }
          ??? public String doExecute() throws Exception {
          ??????? if (hasErrors())
          ??????????? return ERROR;
          ??????? return SUCCESS;
          ??? }

          }
          需實現ModelDriven這個接口,它也只有一個方法
          public Object getModel();
          ?在xwork.xml加上
          <action name="addpet" class="helloWorld.AddPetAction">
          ???<result name="success" type="dispatcher">
          ????<param name="location">/petadded.jsp</param>
          ???</result>
          ???<result name="error" type="dispatcher">
          ????<param name="location">/addpet.jsp</param>
          ???</result>
          ???<interceptor-ref name="debugStack" />
          ???<interceptor-ref name="defaultStack" />
          ??</action>
          還有兩個頁面分別用來添加和顯示用的
          <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
          <%@ taglib prefix="ui" uri="webwork" %>
          <html>
          <head>
          ??? <title>First WebWork Example</title>
          </head>
          <body>
          <form action="addpet.action" method="post">
          <table>
          ??? <ui:textfield label="Pet ID Number" name="id"/>
          ??? <ui:textfield label="Name of Pet" name="name"/>
          ??? <ui:submit value="'Submit'"/>
          </table>
          </form>
          </body>
          </html>
          -------petadded.jsp
          <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
          <%@ taglib prefix="ww" uri="webwork" %>
          <html>
          <head>
          ??? <title>First WebWork Example</title>
          </head>
          <body>
          <p>Added a pet with the following properties:</p>
          <ul>
          ??? <li>ID: <ww:property value="id"/></li>
          ??? <li>Name: <ww:property value="name"/></li>
          </ul>
          </form>
          </body>
          </html>
          posted on 2006-08-02 19:02 蜘蛛 閱讀(3282) 評論(0)  編輯  收藏 所屬分類: webwork

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东乌| 杨浦区| 十堰市| 左云县| 永年县| 家居| 汾西县| 仁寿县| 故城县| 清流县| 阳原县| 驻马店市| 白银市| 晋州市| 松溪县| 临邑县| 冀州市| 武安市| 黄龙县| 罗江县| 凤台县| 怀安县| 平利县| 广德县| 嘉峪关市| 嵩明县| 绥芬河市| 两当县| 凌海市| 留坝县| 左权县| 宜黄县| 雷州市| 舟曲县| 玉屏| 迁西县| 苏尼特右旗| 台中县| 介休市| 赞皇县| 涞源县|