<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為大家提供了不少常用的很酷的表單標(biāo)志,簡化了我們程序員的工作。不過,由于這些都是新標(biāo)志,大家可能在使用上還存在不少疑問。本文將就朋友們的回復(fù)、留言或Email上的問題,分別對這些酷標(biāo)志進(jìn)行講述。

    表單標(biāo)志使用小技巧

    Struts 2的表單標(biāo)志在輸出(render)HTML時(shí),使用了模板的概念,增加了復(fù)雜性(因?yàn)樗幌馭truts 1.x的表單標(biāo)志,它通常都是一個(gè)標(biāo)志對應(yīng)HTML的一個(gè)元素),因此大家在使用時(shí),需要一些技巧:

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

    下面我將分別對這些標(biāo)志進(jìn)行講述:

    1、<s:checkboxlist />

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

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

    <%@ 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

    分布運(yùn)行應(yīng)用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/checkboxlist.jsp,出現(xiàn)如下圖所示頁面:

    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’屬性只有兩個(gè)值,如果我有三個(gè)或更多的值,‘doublelist’屬性應(yīng)該如何設(shè)定呢?”

    我建議的做法是先定義一個(gè)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

    分布運(yùn)行應(yīng)用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/doubleselect.action,出現(xiàn)如下圖所示頁面:

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

    3、<s: token />

    這個(gè)標(biāo)志可能大家不常用,不過本人認(rèn)為它還是挺有用的。在使用Struts 1.x時(shí),因?yàn)樘D(zhuǎn)通常是用Forward(而不是Redirect)實(shí)現(xiàn)的,所以當(dāng)用戶完成請求后,按“F5”刷新頁面時(shí),就會(huì)重新提交上次的請求,這樣經(jīng)常會(huì)出錯(cuò)。要解決這個(gè)問題,<s:token />可以幫你忙。

    實(shí)現(xiàn)原理

    在頁面加載時(shí),<s: token />產(chǎn)生一個(gè)GUID(Globally Unique Identifier,全局唯一標(biāo)識符)值的隱藏輸入框如:

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

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

    具體實(shí)現(xiàn)

    首先看一下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 />標(biāo)志。接下來是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”結(jié)果,因?yàn)?#8220;token”攔截器在會(huì)話token與請求token不一致時(shí),將會(huì)直接返回“invalid.token”結(jié)果。

    發(fā)布運(yùn)行應(yīng)用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/token.jsp,出現(xiàn)如下圖所示頁面:

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

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

    重復(fù)提交出錯(cuò)顯示
    清單11 重復(fù)提交出錯(cuò)顯示

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

    這幾個(gè)標(biāo)志的使用相對簡單,所以我想小舉一例即可,以下是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頁面

    發(fā)布運(yùn)行應(yīng)用程序,在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/others.jsp,出現(xiàn)如下圖所示頁面:

    點(diǎn)擊查看大圖
    清單13 其它表單標(biāo)志頁面

    總結(jié)

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

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

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

    我下載了struts 2.0.6,部署并運(yùn)行其中的范例,發(fā)現(xiàn)MailReader的這個(gè)實(shí)例,有個(gè)bug,不能正常顯示圖片。如在主頁中的圖片struts-power.gif,就不能正常顯示。
    請問:這是什么原因,應(yīng)如何解決。

    Max ,你如果能在百忙中,抽空幫忙解決,這個(gè)問題,就實(shí)在太感謝了。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-21 17:29 | javaman
    真是太好了,我正想問你datetimepicker的用法呢,非常感謝!~  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-21 17:31 | javaman
    小弟最近在學(xué)struts2 在datetimepicker 遇到一個(gè)問題?
    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頁面上始終不能顯示時(shí)間的選擇框,請問是怎么回事呢??
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-21 17:44 | javaman
    我把你做的這個(gè)例子,粘貼過來,其他的都能運(yùn)行就是datetimepicker不能顯示????
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 09:24 | Max
    @javaman
    頁面沒有什么提示信息嗎?這個(gè)例子應(yīng)該很簡單的。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 09:34 | terry
    datetimepicker不能顯示,你在頭部加上<%@ taglib prefix="s" uri="/struts-tags" %>試試  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 10:03 | EricaseJang
    @Jeff
    我也注意到了。我估計(jì)應(yīng)該是text里邊徑符“/”的關(guān)系。
    你看他官網(wǎng)上的mailreader也是看不到圖片。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 10:09 | javaman
    myeclipse的控制臺沒有報(bào)錯(cuò),在瀏覽器的狀態(tài)欄有個(gè)錯(cuò)誤提示:找不到dojo??


    網(wǎng)頁頭部肯定加了<%@ taglib prefix="s" uri="/struts-tags" %>的  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 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.

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

    我記得IE上不顯示圖片,
    但是firefox上能夠正常顯示。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 10:48 | javaman
    datetimepicker 的樣式很不好看,而且還看不清楚,有什么辦法可以改哈他的樣式?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 11:36 | terry
    強(qiáng)烈建議Max建個(gè)QQ群,大家方便交流struts2.0里東西,呵呵  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 13:05 | javaman
    支持!~  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 18:49 | Max
    @javaman
    最簡單的方法用“查看源代碼”方式,查看日歷的樣式,再作相應(yīng)修改。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 18:51 | Max
    @terry
    @javaman
    我覺得QQ群太濫了,大家認(rèn)為Google論壇如何?
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 22:07 | jezz
    我在測試哪個(gè)token的時(shí)候tomcat控制臺報(bào)錯(cuò):
    嚴(yán)重: 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
    嚴(yán)重: 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
    嚴(yán)重: 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
    嚴(yán)重: 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幫我看下!以后我會(huì)經(jīng)常來的!我也在學(xué)struts2  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-23 16:46 | terry
    Max QQ群的即時(shí)消息快點(diǎn),交流起來的效率是不是要高點(diǎn)的,要不我建個(gè),5804258,我也初學(xué)struts2.0,希望大家多賜教了,呵呵  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-23 17:50 | javaman
    問個(gè)問題哈
    我要取得session 或者request的值
    <s:property value="#session.name"/>這樣取肯定沒有問題。

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

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

    謝謝!  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-25 11:50 | john
    最近正在看struts2-showcase這個(gè)例子.
    看了你的文章很受啟發(fā)..謝謝了.  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-26 11:06 | TEA
    怎么修改日歷前輸入框的樣式啊?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-30 17:56 | jim
    剛開始研究struts2 ,有幸看到你文章,收獲不小 ,改日能否當(dāng)面請教  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-30 21:23 | Max
    @TEA
    用“查看源代碼”的方式,檢查對應(yīng)的CSS類名并加修改。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-05-30 21:25 | Max
    @jim
    當(dāng)然可以,如果有機(jī)會(huì)的話。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-06-01 13:53 | kyo
    為什么我一用到list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }" 的時(shí)候IDE會(huì)報(bào)錯(cuò)?(expression expected)不能動(dòng)態(tài)的構(gòu)建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 }"/>
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-06-04 23:30 | Max
    @kyo
    IDE出錯(cuò)提示,有的不用理,知道是怎么一回事就可以了。
    現(xiàn)在的JavaEE的IDE應(yīng)該還沒有支持OGNL的。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-05 10:20 | javaman
    期待你struts2的ajax標(biāo)簽,最近遇到很多問題都需要局部刷新!~  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-05 16:36 | javaman
    批量封裝對象
    這個(gè)在我的項(xiàng)目中正好用到,謝謝MAX,但是我的項(xiàng)目中需要?jiǎng)討B(tài)增加記錄,意思是增加的對象個(gè)數(shù)不定,我看你的是只有3條,要是對象個(gè)數(shù)不定是怎么作呢?
    如何動(dòng)態(tài)的添加和刪除記錄數(shù)呢??  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-07 21:58 | Oliver
    強(qiáng)烈支持博主建Google討論區(qū),大家共同學(xué)習(xí),共同進(jìn)步!QQ群太爛了,查看歷史討論信息也不方便。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-06-08 09:12 | Max
    @Oliver
    @javaman
    I'm working on it  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-16 09:53 | Oliver
    好啊,建好后通知一聲  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 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 }"/>


    這個(gè)list怎樣動(dòng)態(tài)的構(gòu)建,如從數(shù)據(jù)庫中查出
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-06-19 22:38 | Max
    @zzq19850814
    通過Action執(zhí)行DAO操作。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)誌的使用 2007-07-09 02:01 | JJ
    請問如果使用標(biāo)準(zhǔn)
    html tag的select multiple的寫法
    在action
    要如何取得值???
    用List去取值
    都是null
    有其他解嗎???  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-10 13:36 | yiwuyun
    清單4怎么會(huì)出現(xiàn)這種情況:
    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]
    ----------

      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-11 12:05 | jessen
    有的實(shí)例不是很明白  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-11 22:55 | Max
    @JJ
    可以將其綁定集合或數(shù)組如:
    <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;
    }  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-11 22:56 | Max
    @yiwuyun
    你是否通過下*.action訪問頁面?
    -----------------------------------------------------------------
    在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/doubleselect.action  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-15 21:31 | 蛋白質(zhì)
    <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" 要接受這兩個(gè)東西,action里要定義什么類型?String[] admin; Object[] admin; List admin = new ArraryList();都不行,怎么搞啊  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-16 07:35 | 蛋白質(zhì)
    還是我,用list接收到了name的值,有個(gè)問題,一定要用鼠標(biāo)去點(diǎn)一下啊?也就是說,要用鼠標(biāo)去選擇下選擇項(xiàng),把選擇項(xiàng)變成蘭色,激活了,才能把鼠標(biāo)選到的項(xiàng)的值得到,這樣一來是非常麻煩的一個(gè)事啊。有什么辦法解決嗎  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-17 11:16 | caofengnan
    org.apache.jasper.JasperException: /outhers.jsp(13,20) #{..} is not allowed in template text
    這個(gè)是什么原因呢? 樓主  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-07-22 15:13 | mango
    運(yùn)行doubleselect的問題
    在瀏覽器中輸入
    http://localhost:8080/Struts2_CoolTags/doubleselect.action

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

    需要的話,class是什么呢

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

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

    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]
    ----------  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-08-02 23:33 | Max
    @Allen
    1、面上加入某些標(biāo)志(如:<s:doubleselect />等)時(shí),應(yīng)該通過action來訪問頁面,而不是通過*.jsp的URL直接訪問。

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

    <s:radio label="Sex" name="sex" list="#{ 1: '男',2: '女' }" value=" ????"/> 在這個(gè)標(biāo)簽中如何獲得一默認(rèn)值呢?謝謝  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-09-05 00:36 | Max
    @gdm
    試一下這樣:
    <s:radio label="Sex" name="sex" list="#{ 1: '男',2: '女' }" value="1"/>  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-09-05 08:23 | gdm
    我調(diào)試出來了,<s:radio label="Sex" name="user.sex" list="#{ 1: '男', 2: '女' }"value='1' /> 用單引號 不過挺感謝max的回答
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-10-30 16:35 | sgwood
    按照max的做法:直接訪問JSP文件不成功,錯(cuò)誤提示:
    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(省略)

    進(jìn)而用Action去訪問,而用http://localhost:8080/myweb/token.action運(yùn)行可以訪問(指向/token.jsp)但提交數(shù)據(jù)后,顯示: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'>
    提交后刷新能夠提示是重復(fù)提交,但后臺顯示:
    WARN [org.apache.struts2.util.TokenHelper] - <Form token DU5UW3PLUZ17I9PHCB1V7AUUKEMI3V52 does not match the session token 1M148DM2DXLCXDP9SNSBZ828P3B8CX2L.>
    上面有位兄弟有相同的錯(cuò)誤,max建議改名但還是傳報(bào)兩個(gè)ParametersInterceptor (只是其中一個(gè)改為MyToken),希望Max能解答下,我初步懷疑是我的項(xiàng)目中的配置(web.xml等)和您的不一樣了。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-10-30 16:39 | sgwood
    對了,我的問題是:JSP為什么直接調(diào)用不成功/token為什么不正常?謝謝  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-11-09 17:19 | huazihun
    我和sgwood的問題一樣,期望max大哥抽時(shí)間給我們解決一下!謝謝  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-11-12 11:51 | 高山流水
    使用 :<s:doubleselect > 怎樣將這兩個(gè)下拉的選擇框放到下一個(gè)表格的一行的兩列中呢。。。??  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-11-12 14:01 | 高山流水
    Struts 2 怎樣實(shí)現(xiàn)三級聯(lián)動(dòng)呢。。?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-11-19 16:06 | gill
    這個(gè)沒想過。。。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-11-23 11:12 | sspanzer
    @MAX
    請教一個(gè)問題:
    在作doubleselect例子時(shí).copy了doubleselect.jsp,用action來訪問.出現(xiàn)如下錯(cuò)誤:
    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方式來訪問則是和上面兄弟一樣的錯(cuò):
    ==> ${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訪問出現(xiàn)
    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處于開發(fā)狀態(tài)
    還請解釋struts.devMode=false或true有什么區(qū)別?對開發(fā)有什么影響
    謝謝!  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2007-12-01 13:36 | Donson
    期待Max的后續(xù)文章,如自定義等等,因?yàn)槲沂怯脁html+css布局,發(fā)現(xiàn)struts2自帶的生成table,不好控制。。。。  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-09 14:51 | michael
    不知道Max 有沒有遇到過這個(gè)問題。
    [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]
      回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-09 15:58 | michael
    我使用utf-8的編碼格式。
    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    這時(shí)使用s:datetimepicker這個(gè)標(biāo)簽提交的時(shí)候就會(huì)出亂碼。這是怎么回事呢?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-22 14:06 | LING
    為什么在 幾個(gè)下拉列表中,都會(huì)有一個(gè)空的選項(xiàng) ,怎么去掉這個(gè)空的選項(xiàng)呢????  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-23 15:41 | kaka
    Max對你的敬佩如黃河泛濫一發(fā)不可收拾  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2008-01-31 11:16 | 無名小卒
    請問樓主:struts2的日期控件怎么使用?我想在頁面上判斷輸入是否正確,還有就是通過js給它賦值怎么辦啊?我始終得不到這個(gè)日期控制這個(gè)對象?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 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中怎樣實(shí)現(xiàn)如果選擇Java 提交的是1 ,選擇 Spring 提交 11 這樣的功能呢。
    請教MAX 謝謝
    itanyang120@163.com  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2008-03-02 03:46 | fds
    @sspanzer
    fds  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2008-03-11 15:34 | lastsweetop
    十二章struts 2.0 三天看完,調(diào)試成功所有示例,累死我了

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

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

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

    我打開others.jsp還是看不見datetimepicker,網(wǎng)頁錯(cuò)誤說dojo未定義。

    查看網(wǎng)頁源文件發(fā)現(xiàn)有這么一句
    src="/Struts2_OGNL/struts/dojo/dojo.js

    直接在ie中輸入地址
    http://localhost:8080/Struts2_OGNL/struts/dojo/dojo.js
    出現(xiàn)如下錯(cuò)誤信息:

    type Status report

    message

    description The requested resource () is not available.

    看來這個(gè)js文件是找不到了,各位老大幫幫忙啊  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-11-21 13:37 | javaman
    @康康
    struts2新版本引入標(biāo)簽的方式,跟之前的版本不太一樣了,你查以下官方的api文檔  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-11-21 13:39 | javaman
    @helen
    這樣試試
    <s:property value="user.name">   回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2009-01-20 09:13 | shuzigui
    Help!
    我在運(yùn)行你的例子的時(shí)候,只要碰到有l(wèi)ist="#{}"這不能通過調(diào)試,頁面報(bào)錯(cuò)如下According to TLD or attribute directive in tag file, attribute list does not accept any expressions,我已經(jīng)查過你的ognl語言中#的用法,其中的構(gòu)造Map這個(gè)用途我一直都沒有用上,麻煩你解答一下。
    最真誠的感謝!  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo)志的使用 2009-03-12 16:55 | 王銀龍
    恩,不錯(cuò)的,很好,我就是有一個(gè)小問題呢?就是我每次刷新頁面都會(huì)跳到同一個(gè)頁面,但我想指定到一個(gè)頁面應(yīng)該怎么搞呢?  回復(fù)  更多評論
      
    # re: Strus 2的新表單標(biāo) 2014-03-13 14:03 | dsa
    sdfa  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲乱码av中文一区二区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产VA免费精品高清在线| 成人黄动漫画免费网站视频 | 亚洲国产成人va在线观看网址| 免费毛片a线观看| 亚洲av丰满熟妇在线播放| 99久久精品免费精品国产| 亚洲麻豆精品果冻传媒| 麻豆高清免费国产一区| 亚洲成a人片在线观看播放| 99在线精品视频观看免费| 亚洲午夜精品一区二区麻豆| 国产精品久久久久影院免费| 成年大片免费高清在线看黄| 亚洲无线观看国产精品| 99在线观看免费视频| www.亚洲成在线| 国产做床爱无遮挡免费视频| 一级毛片**免费看试看20分钟| 亚洲熟妇丰满多毛XXXX| 黄色网址免费观看| 亚洲av无码专区亚洲av不卡| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 久久久久亚洲AV无码网站| 青娱乐免费视频在线观看| 亚洲永久网址在线观看| 亚洲av无码国产精品色在线看不卡 | 在线天堂免费观看.WWW| 亚洲最大黄色网址| 日本三级2019在线观看免费| 处破女第一次亚洲18分钟| 亚洲国产精品国自产拍AV| 国产成人无码免费看视频软件| 春暖花开亚洲性无区一区二区| 国产亚洲一区二区三区在线| 久久午夜免费视频| 男女一边摸一边做爽的免费视频| 亚洲欧洲国产综合| 国产偷国产偷亚洲高清日韩| 免费v片在线观看视频网站|