<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-34  評論-1965  文章-0  trackbacks-0

     Struts 2為大家提供了不少常用的很酷的表單標志,簡化了我們程序員的工作。不過,由于這些都是新標志,大家可能在使用上還存在不少疑問。本文將就朋友們的回復、留言或Email上的問題,分別對這些酷標志進行講述。

    表單標志使用小技巧

    Struts 2的表單標志在輸出(render)HTML時,使用了模板的概念,增加了復雜性(因為它不像Struts 1.x的表單標志,它通常都是一個標志對應HTML的一個元素),因此大家在使用時,需要一些技巧:

    1. Struts 2的UI標志的表單標志默認是以表格布局,按鈕是右對齊的。如果你不喜歡此風格,你可以簡單地將<s:form />標志的“theme”屬性設為“simple”,然后用以往的做法自已布局表單元素(注意:此法有利有弊,弊就是當你將“theme”屬性設為“simple”時,表單標志以最簡單方式輸出HTML,所以你可能失去一些默認輸出提供的便利,如:友好的錯誤信息的顯示,或客戶端的表單驗證等)。當然更好的做法是通過CSS或自定義主題(theme)然后應用到整個應用程序,這樣可以獲得一致的頁面風格,加強用戶體驗(我會在以后的文章對此進行講解);
    2. 當你在頁面上加入某些標志(如:<s:doubleselect />等)時,應該通過action來訪問頁面,而不是通過*.jsp的URL直接訪問。

    下面我將分別對這些標志進行講述:

    1、<s:checkboxlist />

    大家對<s:checkboxlist />的最大的疑問可能是:“如何在默認情況下,選中某些checkbox?”

    答案其實很簡單,只需要將其“value”屬性設為你的要選中的值,如以代碼所示:

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       
    <title>Struts 2 Cool Tags - &lt;s:checkboxlist/ &gt;</title>
       
    <s:head />
    </head>
    <body>    
       
    <h2>&lt;s:checkboxlist/&gt;</h2>
       
    <s:form action="Store" >
           
    <s:checkboxlist name="skills1" 
                            label
    ="Skills 1" 
                            list
    ="{ 'Java', '.Net', 'RoR', 'PHP' }" 
                            value
    ="{ 'Java', '.Net' }" />
           
    <s:checkboxlist name="skills2" 
                            label
    ="Skills 2" 
                            list
    ="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }" 
                            listKey
    ="key" 
                            listValue
    ="value" 
                            value
    ="{ 1, 2, 3 }"/>
       
    </s:form>
    </body>
    </html>
    清單1 WebContent/checkboxlist.jsp

    分布運行應用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/checkboxlist.jsp,出現如下圖所示頁面:

    checkboxlist.jsp頁面
    清單2 checkboxlist.jsp頁面

    2、<s:doubleselect />

    大家看Struts 2的showcase的例子,<s:doubleselect />的用法如下所示:

        <s:doubleselect
               
    tooltip="Choose Your State"
                label
    ="State"
                name
    ="region" list="{'North', 'South'}"
                value
    ="'South'"
                doubleValue
    ="'Florida'"
                doubleList
    ="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}" 
                doubleName
    ="state"
                headerKey
    ="-1"
                headerValue
    ="---------- Please Select ----------"
                emptyOption
    ="true" />
    清單3 Showcase中<s:doubleselect />

    很多朋友問:“上面的‘list’屬性只有兩個值,如果我有三個或更多的值,‘doublelist’屬性應該如何設定呢?”

    我建議的做法是先定義一個Map類型的對象,鍵為“list”的集合,值則為“doubleList”的集合,然后“doubleList”的OGNL寫成“#myMap[top]”,如以下代碼所示:

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       
    <title>Struts 2 Cool Tags - &lt;s:doubeselect/ &gt;</title>
       
    <s:head />
    </head>
    <body>    
       
    <h2>&lt;s:doubleselect/&gt;</h2>
       
    <s:form action="Store" >
           
    <s:set name="foobar" 
                   value
    ="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
           
    <s:doubleselect list="#foobar.keySet()"
                              doubleName
    ="technology" 
                              doubleList
    ="#foobar[top]" 
                              label
    ="Technology" />
       
    </s:form>
    </body>
    </html>
    清單4 WebContent/doubleselect.jsp

    分布運行應用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/doubleselect.action,出現如下圖所示頁面:

    doubleselect.jsp頁面
    清單5 doubleselect.jsp頁面

    3、<s: token />

    這個標志可能大家不常用,不過本人認為它還是挺有用的。在使用Struts 1.x時,因為跳轉通常是用Forward(而不是Redirect)實現的,所以當用戶完成請求后,按“F5”刷新頁面時,就會重新提交上次的請求,這樣經常會出錯。要解決這個問題,<s:token />可以幫你忙。

    實現原理

    在頁面加載時,<s: token />產生一個GUID(Globally Unique Identifier,全局唯一標識符)值的隱藏輸入框如:

    <input type="hidden" name="struts.token.name" value="struts.token"/>
    <input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
    清單6 <s:token />的HTML輸出

    同時,將GUID放到會話(session)中;在執行action之前,“token”攔截器將會話token與請求token比較,如果兩者相同,則將會話中的token刪除并往下執行,否則向actionErrors加入錯誤信息。如此一來,如果用戶通過某種手段提交了兩次相同的請求,兩個token就會不同。

    具體實現

    首先看一下Action的代碼:

    package tutorial;

    import com.opensymphony.xwork2.ActionSupport;

    public class CoolTagAction extends ActionSupport {    
       
    private static final long serialVersionUID = 6820659617470261780L;
       
       
    private String message;
           
       
    public String getMessage() {
           
    return message;
       }


       
    public void setMessage(String message) {
           
    this.message = message;
       }

       
       @Override
       
    public String execute() {
           System.out.println(
    "Executing action, your message is " + message);
           
    return SUCCESS;
       }
       
    }
    清單7 src/tutorial/CoolTagAction.java

    以上代碼一目了然,再看看JSP的寫法:

    %@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       
    <title>Struts 2 Cool Tags - &lt;s:token/ &gt;</title>
       
    <s:head />
    </head>
    <body>    
       
    <h2>&lt;s:token/&gt;</h2>
       
    <s:actionerror />
       
    <s:form action="Token" >
           
    <s:textfield name="message" label="Message" />
           
    <s:token />
           
    <s:submit />
       
    </s:form>
    </body>
    </html>
    清單8 WebContent/token.jsp

    JSP也很簡單,就是加入<s:token />標志。接下來是Actoin配置的XML片段:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>
       
    <package name="Struts2_COOL_TAGS_DEMO" extends="struts-default">
           
    <action name="Token" class="tutorial.CoolTagAction">
               
    <interceptor-ref name="defaultStack" />
               
    <interceptor-ref name="token" />
               
    <result name="invalid.token">/token.jsp</result>                        
               
    <result>/token.jsp</result>
           
    </action>
           
    <action name="*">
               
    <result>/{1}.jsp</result>
           
    </action>
       
    </package>
    </struts>
    清單9 src/struts.xml

    以上XML片段值注意的是加入了“token”攔截器和“invalid.token”結果,因為“token”攔截器在會話token與請求token不一致時,將會直接返回“invalid.token”結果。

    發布運行應用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/token.jsp,出現如下圖所示頁面:

    正常顯示的token.jsp頁面
    清單10 正常顯示的token.jsp頁面

    隨便填點東西并提交頁面,一切正常返回以上頁面,然后按“F5”刷新頁面,在彈出的對話框中點擊“Retry”,出現如下圖所示頁面:

    重復提交出錯顯示
    清單11 重復提交出錯顯示

    4、<s:datetimepicker />、<s:optiontransferselect />和<s:updownselect />

    這幾個標志的使用相對簡單,所以我想小舉一例即可,以下是JSP的代碼:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       
    <title>Struts 2 Cool Tags - Others</title>
       
    <s:head />
    </head>
    <body>    
       
    <h2>Others</h2>
       
    <s:form action="Store" >
           
    <s:datetimepicker name="birthday" label="Birthday" />
           
    <s:updownselect
               
    label = "Favourite Countries"
                list
    ="#{'england':'England', 'america':'America', 'germany':'Germany'}"
                name
    ="prioritisedFavouriteCountries"
                headerKey
    ="-1"
                headerValue
    ="--- Please Order Them Accordingly ---"
                emptyOption
    ="true" />
           
    <s:optiontransferselect            
               
    label="Favourite Cartoons Characters"
                name
    ="leftSideCartoonCharacters" 
                leftTitle
    ="Left Title"
                rightTitle
    ="Right Title"
                list
    ="{'Popeye', 'He-Man', 'Spiderman'}" 
                multiple
    ="true"
                headerKey
    ="headerKey"
                headerValue
    ="--- Please Select ---"
                emptyOption
    ="true"
                doubleList
    ="{'Superman', 'Mickey Mouse', 'Donald Duck'}" 
                doubleName
    ="rightSideCartoonCharacters"
                doubleHeaderKey
    ="doubleHeaderKey"
                doubleHeaderValue
    ="--- Please Select ---" 
                doubleEmptyOption
    ="true"
                doubleMultiple
    ="true" />
       
    </s:form>
    </body>
    </html>
    清單12 WebContent\others.jsp頁面

    發布運行應用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/others.jsp,出現如下圖所示頁面:

    點擊查看大圖
    清單13 其它表單標志頁面

    總結

    Struts 2在標志上的確比Struts 1.x豐富了許多,同時模板機制也給程序員帶來不少方便(如果你不太喜歡個性化的風格)。另外,Struts 2還有一些AJAX(如<s: autocompleter />等)的標志和非表單的UI標志(如<s: tree />等),我會在以后的文章中講述其使用。

    posted on 2007-05-18 19:34 Max 閱讀(36830) 評論(86)  編輯  收藏 所屬分類: Struts 2.0系列

    評論:
    # re: Strus 2的新表單標志的使用 2007-05-19 08:26 | ec
    好,支持,一會兒再嘗試一下,哈哈~~  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-19 11:44 | zy
    您的文章很好,很新鮮。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-19 22:23 | Max
    @ec
    @zy
    謝謝大家的支持:-)  回復  更多評論
      
    # mailreader實例有點問題[未登錄] 2007-05-20 13:11 | Jeff
    Max 你在struts的造詣,我實在佩服。看到你的大作,我獲益匪淺。

    我下載了struts 2.0.6,部署并運行其中的范例,發現MailReader的這個實例,有個bug,不能正常顯示圖片。如在主頁中的圖片struts-power.gif,就不能正常顯示。
    請問:這是什么原因,應如何解決。

    Max ,你如果能在百忙中,抽空幫忙解決,這個問題,就實在太感謝了。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-21 17:29 | javaman
    真是太好了,我正想問你datetimepicker的用法呢,非常感謝!~  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-21 17:31 | javaman
    小弟最近在學struts2 在datetimepicker 遇到一個問題?
    class:

    public class myclass1 extends ActionSupport{
    private Date birthday;

    public Date getBirthday() {
    return birthday;
    }

    public void setBirthday(Date birthday) {
    this.birthday= birthday;
    }

    public String execute(){
    return SUCCESS;
    }

    }



    index.jsp:
    <s:form action="myaction1">
    <s:datetimepicker name="birthday" label="生日"/></<br>
    <s:submit/>
    </s:form>


    問題:在index.jsp頁面上始終不能顯示時間的選擇框,請問是怎么回事呢??
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-21 17:44 | javaman
    我把你做的這個例子,粘貼過來,其他的都能運行就是datetimepicker不能顯示????
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 09:24 | Max
    @javaman
    頁面沒有什么提示信息嗎?這個例子應該很簡單的。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 09:34 | terry
    datetimepicker不能顯示,你在頭部加上<%@ taglib prefix="s" uri="/struts-tags" %>試試  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 10:03 | EricaseJang
    @Jeff
    我也注意到了。我估計應該是text里邊徑符“/”的關系。
    你看他官網上的mailreader也是看不到圖片。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 10:09 | javaman
    myeclipse的控制臺沒有報錯,在瀏覽器的狀態欄有個錯誤提示:找不到dojo??


    網頁頭部肯定加了<%@ taglib prefix="s" uri="/struts-tags" %>的  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 10:27 | javaman
    哈哈,問題終于解決了!~
    <head><s:head/></head> OK了

    解釋:


    Renders parts of the HEAD section for an HTML file. This is useful as some themes require certain CSS and JavaScript includes.

    If, for example, your page has ajax components integrated, without having the default theme set to ajax, you might want to use the head tag with theme="ajax" so that the typical ajax header setup will be included in the page.

    The tag also includes the option to set a custom datepicker theme if needed. See calendarcss parameter for description for details.

    If you use the ajax theme you can turn a debug flag on by setting the debug parameter to true.

      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 10:32 | orchlon
    @Jeff

    我記得IE上不顯示圖片,
    但是firefox上能夠正常顯示。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 10:48 | javaman
    datetimepicker 的樣式很不好看,而且還看不清楚,有什么辦法可以改哈他的樣式?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 11:36 | terry
    強烈建議Max建個QQ群,大家方便交流struts2.0里東西,呵呵  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-22 13:05 | javaman
    支持!~  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 18:49 | Max
    @javaman
    最簡單的方法用“查看源代碼”方式,查看日歷的樣式,再作相應修改。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 18:51 | Max
    @terry
    @javaman
    我覺得QQ群太濫了,大家認為Google論壇如何?
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-22 22:07 | jezz
    我在測試哪個token的時候tomcat控制臺報錯:
    嚴重: ParametersInterceptor - [setParameters]: Unexpected Exception catched: Err
    or setting expression 'struts.token' with value '[Ljava.lang.String;@13576a2'
    2007-5-22 21:36:17 com.opensymphony.xwork2.interceptor.ParametersInterceptor set
    Parameters
    嚴重: ParametersInterceptor - [setParameters]: Unexpected Exception catched: Err
    or setting expression 'struts.token.name' with value '[Ljava.lang.String;@ff8c74
    '
    2007-5-22 21:36:17 com.opensymphony.xwork2.validator.ActionValidatorManagerFacto
    ry <clinit>
    信息: Detected AnnotationActionValidatorManager, initializing it...
    Executing action, your message is 23566
    2007-5-22 21:36:25 com.opensymphony.xwork2.interceptor.ParametersInterceptor set
    Parameters
    嚴重: ParametersInterceptor - [setParameters]: Unexpected Exception catched: Err
    or setting expression 'struts.token' with value '[Ljava.lang.String;@c68a98'
    2007-5-22 21:36:25 com.opensymphony.xwork2.interceptor.ParametersInterceptor set
    Parameters
    嚴重: ParametersInterceptor - [setParameters]: Unexpected Exception catched: Err
    or setting expression 'struts.token.name' with value '[Ljava.lang.String;@354749
    '
    2007-5-22 21:36:25 org.apache.struts2.util.TokenHelper validToken
    警告: Form token LNTDZ5OTANEM6E0Y0ZDGJSPA7WOXLI4 does not match the session toke
    n GA8LF6M6WO4PY7YZ0PBXQLTVP3R6ZQS5.
    請MAX幫我看下!以后我會經常來的!我也在學struts2  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-23 16:46 | terry
    Max QQ群的即時消息快點,交流起來的效率是不是要高點的,要不我建個,5804258,我也初學struts2.0,希望大家多賜教了,呵呵  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-23 17:50 | javaman
    問個問題哈
    我要取得session 或者request的值
    <s:property value="#session.name"/>這樣取肯定沒有問題。

    如果我要把取得的值放在文本框中
    <s:textfield name="name" value="#session.name"/>就不能取到,是怎么回事呢? 不用<%%> 怎么樣才能把session中的值取到文本框中呢?

      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-24 10:08 | Max
    @jezz
    你可以嘗試一下設一下<s:token />的name屬性,如<s:token name="MyToken" />.  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-24 10:19 | Max
    @javaman
    這樣寫就可以了:
    <s:textfield name="name" value="%{#session.name}"/>  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-24 10:23 | Max
    @terry
    感謝您的努力,有空大家可以進去看看:-)  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-24 11:14 | javaman

    謝謝!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-25 11:50 | john
    最近正在看struts2-showcase這個例子.
    看了你的文章很受啟發..謝謝了.  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-26 11:06 | TEA
    怎么修改日歷前輸入框的樣式啊?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-05-30 17:56 | jim
    剛開始研究struts2 ,有幸看到你文章,收獲不小 ,改日能否當面請教  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-30 21:23 | Max
    @TEA
    用“查看源代碼”的方式,檢查對應的CSS類名并加修改。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-05-30 21:25 | Max
    @jim
    當然可以,如果有機會的話。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-06-01 13:53 | kyo
    為什么我一用到list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }" 的時候IDE會報錯?(expression expected)不能動態的構建MAP?

    <s:checkboxlist name="skills2"
    label="Skills 2"
    list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }"
    listKey="key"
    listValue="value"
    value="{ 1, 2, 3 }"/>
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-06-04 23:30 | Max
    @kyo
    IDE出錯提示,有的不用理,知道是怎么一回事就可以了。
    現在的JavaEE的IDE應該還沒有支持OGNL的。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-06-05 10:20 | javaman
    期待你struts2的ajax標簽,最近遇到很多問題都需要局部刷新!~  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-06-05 16:36 | javaman
    批量封裝對象
    這個在我的項目中正好用到,謝謝MAX,但是我的項目中需要動態增加記錄,意思是增加的對象個數不定,我看你的是只有3條,要是對象個數不定是怎么作呢?
    如何動態的添加和刪除記錄數呢??  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-06-07 21:58 | Oliver
    強烈支持博主建Google討論區,大家共同學習,共同進步!QQ群太爛了,查看歷史討論信息也不方便。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-06-08 09:12 | Max
    @Oliver
    @javaman
    I'm working on it  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-06-16 09:53 | Oliver
    好啊,建好后通知一聲  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-06-19 13:15 | zzq19850814
    @kyo

    <s:checkboxlist name="skills2"
    label="Skills 2"
    list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }"
    listKey="key"
    listValue="value"
    value="{ 1, 2, 3 }"/>


    這個list怎樣動態的構建,如從數據庫中查出
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-06-19 22:38 | Max
    @zzq19850814
    通過Action執行DAO操作。  回復  更多評論
      
    # re: Strus 2的新表單標誌的使用 2007-07-09 02:01 | JJ
    請問如果使用標準
    html tag的select multiple的寫法
    在action
    要如何取得值???
    用List去取值
    都是null
    有其他解嗎???  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-10 13:36 | yiwuyun
    清單4怎么會出現這種情況:
    FreeMarker template error!

    Expression parameters.formName is undefined on line 76, column 43 in template/simple/doubleselect.ftl.
    The problematic instruction:
    ----------
    ==> ${parameters.formName} [on line 76, column 41 in template/simple/doubleselect.ftl]
    in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 3, column 1 in template/xhtml/doubleselect.ftl]
    ----------

      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-11 12:05 | jessen
    有的實例不是很明白  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-11 22:55 | Max
    @JJ
    可以將其綁定集合或數組如:
    <s:select list="{ 'JSP', 'ASP.net', 'RoR', 'PHP' }" name="mySelector" multiple="true" />
    代碼為:
    private List<String> mySelector;

    public List<String> getMySelector() {
    return mySelector;
    }

    public void setMySelector(List<String> mySelector) {
    this.mySelector = mySelector;
    }  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-11 22:56 | Max
    @yiwuyun
    你是否通過下*.action訪問頁面?
    -----------------------------------------------------------------
    在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/doubleselect.action  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-15 21:31 | 蛋白質
    <s:optiontransferselect name="admin" list="loves" doubleName="admin2" doubleList="gl" leftTitle="左邊的窗口" rightTitle="右邊的窗口" label="從左到右,從右到左" headerKey="headerKey" headerValue="---請選擇---" doubleHeaderKey="doubleHeaderKey" doubleHeaderValue="---已選擇---"></s:optiontransferselect>

    教我下,接收有問題啊,name="admin" doubleName="admin2" 要接受這兩個東西,action里要定義什么類型?String[] admin; Object[] admin; List admin = new ArraryList();都不行,怎么搞啊  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-16 07:35 | 蛋白質
    還是我,用list接收到了name的值,有個問題,一定要用鼠標去點一下啊?也就是說,要用鼠標去選擇下選擇項,把選擇項變成蘭色,激活了,才能把鼠標選到的項的值得到,這樣一來是非常麻煩的一個事啊。有什么辦法解決嗎  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-17 11:16 | caofengnan
    org.apache.jasper.JasperException: /outhers.jsp(13,20) #{..} is not allowed in template text
    這個是什么原因呢? 樓主  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-22 15:13 | mango
    運行doubleselect的問題
    在瀏覽器中輸入
    http://localhost:8080/Struts2_CoolTags/doubleselect.action

    這里需要在struts.xml中配置Action="doubleselect"嗎
    我沒有配置,出錯信息There is no Action mapped for namespace / and action name doubleselect.

    需要的話,class是什么呢

      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-07-22 16:12 | mango
    我在struts.xml中加入
    <action name="*">
    <result>/{1}.jsp</result>
    </action>

    OK了!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2007-08-01 09:47 | Allen
    關于doubleselect的問題:
    我直接Copy過來就出現了錯誤:我同事機器上運行也有同樣的錯誤,能幫忙給解決下么?謝謝

    freemarker.log.JDK14LoggerFactory$JDK14Logger error


    FreeMarker template error!
    Expression parameters.formName is undefined on line 76, column 43 in template/simple/doubleselect.ftl.
    The problematic instruction:
    ----------
    ==> ${parameters.formName} [on line 76, column 41 in template/simple/doubleselect.ftl]
    in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 3, column 1 in template/xhtml/doubleselect.ftl]
    ----------  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-08-02 23:33 | Max
    @Allen
    1、面上加入某些標志(如:<s:doubleselect />等)時,應該通過action來訪問頁面,而不是通過*.jsp的URL直接訪問。

    2、或者<s:form />標簽中添加name屬性,如<s:form name="myForm" />  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-08-21 15:45 | Feijf
    運行清單4時,為什么當list選擇java時,doubleList和List中間回空一行,而list選擇.Net或Database時,沒有空行。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-09-03 09:43 | gdm

    <s:radio label="Sex" name="sex" list="#{ 1: '男',2: '女' }" value=" ????"/> 在這個標簽中如何獲得一默認值呢?謝謝  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-09-05 00:36 | Max
    @gdm
    試一下這樣:
    <s:radio label="Sex" name="sex" list="#{ 1: '男',2: '女' }" value="1"/>  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-09-05 08:23 | gdm
    我調試出來了,<s:radio label="Sex" name="user.sex" list="#{ 1: '男', 2: '女' }"value='1' /> 用單引號 不過挺感謝max的回答
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-10-30 16:35 | sgwood
    按照max的做法:直接訪問JSP文件不成功,錯誤提示:
    System Runtime Error:
    An exception occurred processing JSP page /token.jsp at line 8 5: 6: 7: 8: 9: 10: 11:
    <s:token/>
    Stacktrace:
    5: <html xmlns="http://www.w3.org/1999/xhtml">
    6: <head>
    7: <title>Struts 2 Cool Tags - &lt;s:token/ &gt;</title>
    8: <s:head />
    9: </head>
    10: <body>
    11: <h2>&lt;s:token/&gt;</h2>
    Stacktrace:>
    org.apache.jasper.JasperException: An exception occurred processing JSP page /token.jsp at line 8(省略)

    進而用Action去訪問,而用http://localhost:8080/myweb/token.action運行可以訪問(指向/token.jsp)但提交數據后,顯示:16:22:13,109 INFO [STDOUT] 2007-10-30 16:22:13,109 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - <ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'MyToken' on 'class tutorial.CoolTagAction: Error setting expression 'MyToken' with value '[Ljava.lang.String;@1af2a9c'>
    16:22:13,109 INFO [STDOUT] 2007-10-30 16:22:13,109 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - <ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'struts.token.name' on 'class tutorial.CoolTagAction: Error setting expression 'struts.token.name' with value '[Ljava.lang.String;@11674f0'>
    提交后刷新能夠提示是重復提交,但后臺顯示:
    WARN [org.apache.struts2.util.TokenHelper] - <Form token DU5UW3PLUZ17I9PHCB1V7AUUKEMI3V52 does not match the session token 1M148DM2DXLCXDP9SNSBZ828P3B8CX2L.>
    上面有位兄弟有相同的錯誤,max建議改名但還是傳報兩個ParametersInterceptor (只是其中一個改為MyToken),希望Max能解答下,我初步懷疑是我的項目中的配置(web.xml等)和您的不一樣了。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-10-30 16:39 | sgwood
    對了,我的問題是:JSP為什么直接調用不成功/token為什么不正常?謝謝  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-11-09 17:19 | huazihun
    我和sgwood的問題一樣,期望max大哥抽時間給我們解決一下!謝謝  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-11-12 11:51 | 高山流水
    使用 :<s:doubleselect > 怎樣將這兩個下拉的選擇框放到下一個表格的一行的兩列中呢。。。??  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-11-12 14:01 | 高山流水
    Struts 2 怎樣實現三級聯動呢。。?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-11-19 16:06 | gill
    這個沒想過。。。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-11-23 11:12 | sspanzer
    @MAX
    請教一個問題:
    在作doubleselect例子時.copy了doubleselect.jsp,用action來訪問.出現如下錯誤:
    Messages: There is no Action mapped for namespace / and action name doubleselect.
    ......
    You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:

    struts.devMode=false

    in your WEB-INF/classes/struts.properties file.
    用JSP方式來訪問則是和上面兄弟一樣的錯:
    ==> ${parameters.formName} [on line 98, column 41 in template/simple/doubleselect.ftl]
    in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 25, column 1 in template/xhtml/doubleselect.ftl]

    在struts.properties 中加入struts.devMode=false后.action訪問出現
    HTTP Status 404 - There is no Action mapped for namespace / and action name doubleselect.
    意識到是在struts.xml中少了action
    加入
    <action name="doubleselect" >
    <result>/doubleselect.jsp</result>
    </action>
    修改doubleselect.jsp為:
    <s:form action="doubleselect" >

    action訪問成功,后又試JSP方式也可,還請教MAX這是為何?
    試著去掉struts.devMode = false后.訪問一樣可以
    google得知struts.devMode = false指定Struts 2處于開發狀態
    還請解釋struts.devMode=false或true有什么區別?對開發有什么影響
    謝謝!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2007-12-01 13:36 | Donson
    期待Max的后續文章,如自定義等等,因為我是用xhtml+css布局,發現struts2自帶的生成table,不好控制。。。。  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-01-09 14:51 | michael
    不知道Max 有沒有遇到過這個問題。
    [14:45:40.753] Expression parameters.doubleId is undefined on line 56, column 108 in template/simple/optiontransferselect.ftl.
    [14:45:40.753] The problematic instruction:
    [14:45:40.753] ----------
    [14:45:40.753] ==> ${parameters.doubleId?html} [on line 56, column 106 in template/simple/optiontransferselect.ftl]
    [14:45:40.753] in include "/${parameters.templateDir}/simple/optiontransferselect.ftl" [on line 2, column 1 in template/xhtml/optiontransferselect.ftl]
    [14:45:40.753] ----------
    [14:45:40.753]
      回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-01-09 15:58 | michael
    我使用utf-8的編碼格式。
    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    這時使用s:datetimepicker這個標簽提交的時候就會出亂碼。這是怎么回事呢?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-01-22 14:06 | LING
    為什么在 幾個下拉列表中,都會有一個空的選項 ,怎么去掉這個空的選項呢????  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-01-23 15:41 | kaka
    Max對你的敬佩如黃河泛濫一發不可收拾  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-01-31 11:16 | 無名小卒
    請問樓主:struts2的日期控件怎么使用?我想在頁面上判斷輸入是否正確,還有就是通過js給它賦值怎么辦啊?我始終得不到這個日期控制這個對象?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-02-28 09:13 | itanyang
    <s:set name="foobar"
    value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
    <s:doubleselect list="#foobar.keySet()"
    doubleName="technology"
    doubleList="#foobar[top]"
    label="Technology" />
    </s:form>
    在doubleselect中怎樣實現如果選擇Java 提交的是1 ,選擇 Spring 提交 11 這樣的功能呢。
    請教MAX 謝謝
    itanyang120@163.com  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-03-02 03:46 | fds
    @sspanzer
    fds  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-03-11 15:34 | lastsweetop
    十二章struts 2.0 三天看完,調試成功所有示例,累死我了

    感謝Max 和struts 2.0的開發者 很好很強大  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-03-19 00:25 | ercerc
    感謝max的詳細講解,通俗易懂,但有兩個問題,麻煩幫忙看看,謝謝:
    1)datetimepicker reset的時候變成空
    edit頁面,里面有一個datetimepicker本來是有值的,但form reset的時候變成了空,請問怎樣保持以前的值?
    2)能不能讓datetimepicker只能選擇,不能手工輸入?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-03-25 09:35 | laci
    checkboxlist 輸出結果是橫的,我想輸出縱向的.就是一行只有一條數據那種,怎么辦?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-04-25 06:55 | helen
    請教一個郁悶的問題:struts2

    我再userAction里得到User對象,User對象的屬性都在domain包里,我在UserAction后返回jsp頁面怎么得到User的屬性呢 ?

    <s:property value="%{user.name}"> 不行么?555,高手快現身救我!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-04-26 15:11 | 彪彪
    @蛋白質
    struts.ui.theme=xhtml 即可 如為 ajax 好象不行  回復  更多評論
      
    # 使用 2008-05-14 14:29 | 金昌
    試一試  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-06-20 10:51 | kaig
    @helen
    <s:property value="user.name"> 應該就可以了  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-06-20 23:07 | zirantian
    在strust2里面,超連接傳的參數始終為空,這倒底是為什么啊?怎么解決啊?  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-06-21 15:06 | 淘聲依舊
    加入<s:head/>或者是使用IE7無法顯示,這些控件在ie7里不支持  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2008-11-14 13:29 | 心夢帆影
    謝謝,你的文章真的很有用!謝謝!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-11-20 01:36 | 康康
    @javaman
    我也這樣做了,還是不行

    我打開others.jsp還是看不見datetimepicker,網頁錯誤說dojo未定義。

    查看網頁源文件發現有這么一句
    src="/Struts2_OGNL/struts/dojo/dojo.js

    直接在ie中輸入地址
    http://localhost:8080/Struts2_OGNL/struts/dojo/dojo.js
    出現如下錯誤信息:

    type Status report

    message

    description The requested resource () is not available.

    看來這個js文件是找不到了,各位老大幫幫忙啊  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-11-21 13:37 | javaman
    @康康
    struts2新版本引入標簽的方式,跟之前的版本不太一樣了,你查以下官方的api文檔  回復  更多評論
      
    # re: Strus 2的新表單標志的使用[未登錄] 2008-11-21 13:39 | javaman
    @helen
    這樣試試
    <s:property value="user.name">   回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2009-01-20 09:13 | shuzigui
    Help!
    我在運行你的例子的時候,只要碰到有list="#{}"這不能通過調試,頁面報錯如下According to TLD or attribute directive in tag file, attribute list does not accept any expressions,我已經查過你的ognl語言中#的用法,其中的構造Map這個用途我一直都沒有用上,麻煩你解答一下。
    最真誠的感謝!  回復  更多評論
      
    # re: Strus 2的新表單標志的使用 2009-03-12 16:55 | 王銀龍
    恩,不錯的,很好,我就是有一個小問題呢?就是我每次刷新頁面都會跳到同一個頁面,但我想指定到一個頁面應該怎么搞呢?  回復  更多評論
      
    # re: Strus 2的新表單標 2014-03-13 14:03 | dsa
    sdfa  回復  更多評論
      
    主站蜘蛛池模板: 国产精品免费观看调教网| 亚洲狠狠婷婷综合久久| 国产免费福利体检区久久| 国产青草视频在线观看免费影院| 亚洲日本乱码一区二区在线二产线| 在线观看肉片AV网站免费| 亚洲阿v天堂在线| 中文字幕乱码一区二区免费| 亚洲AV本道一区二区三区四区| 国产在线观看免费视频软件| 亚洲成AV人片在线观看WWW| 18观看免费永久视频| 亚洲国产综合在线| 久久WWW色情成人免费观看| 亚洲欧洲无卡二区视頻| 国产免费131美女视频| 四虎国产精品成人免费久久| 久久亚洲色一区二区三区| a级毛片在线免费| 精品日韩亚洲AV无码| 啦啦啦高清视频在线观看免费 | 国产精品久久亚洲不卡动漫| 永久免费av无码网站韩国毛片| 国产精品亚洲自在线播放页码| 日韩免费无码一区二区视频| 新最免费影视大全在线播放| 国产精品久久久亚洲| 和日本免费不卡在线v| 国产亚洲精品美女| 久久亚洲精品视频| 国产黄色免费网站| 亚洲人片在线观看天堂无码| 亚洲天堂中文字幕在线| 99久9在线|免费| 国产亚洲综合视频| 亚洲av无码一区二区乱子伦as| 在人线av无码免费高潮喷水| 国产精品免费一区二区三区 | 亚洲卡一卡二卡乱码新区| 国产精品99久久免费| 中文字幕久精品免费视频|