隨筆-34  評(píng)論-1965  文章-0  trackbacks-0

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

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

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

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

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

          1、<s:checkboxlist />

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

          答案其實(shí)很簡(jiǎn)單,只需要將其“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)如下圖所示頁(yè)面:

          checkboxlist.jsp頁(yè)面
          清單2 checkboxlist.jsp頁(yè)面

          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類型的對(duì)象,鍵為“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)如下圖所示頁(yè)面:

          doubleselect.jsp頁(yè)面
          清單5 doubleselect.jsp頁(yè)面

          3、<s: token />

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

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

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

          <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與請(qǐng)求token比較,如果兩者相同,則將會(huì)話中的token刪除并往下執(zhí)行,否則向actionErrors加入錯(cuò)誤信息。如此一來,如果用戶通過某種手段提交了兩次相同的請(qǐng)求,兩個(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也很簡(jiǎn)單,就是加入<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與請(qǐng)求token不一致時(shí),將會(huì)直接返回“invalid.token”結(jié)果。

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

          正常顯示的token.jsp頁(yè)面
          清單10 正常顯示的token.jsp頁(yè)面

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

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

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

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

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

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

          總結(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 閱讀(36833) 評(píng)論(86)  編輯  收藏 所屬分類: Struts 2.0系列

          評(píng)論:
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-19 08:26 | ec
          好,支持,一會(huì)兒再嘗試一下,哈哈~~  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-19 11:44 | zy
          您的文章很好,很新鮮。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-19 22:23 | Max
          @ec
          @zy
          謝謝大家的支持:-)  回復(fù)  更多評(píng)論
            
          # 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,不能正常顯示圖片。如在主頁(yè)中的圖片struts-power.gif,就不能正常顯示。
          請(qǐng)問:這是什么原因,應(yīng)如何解決。

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


          網(wǎng)頁(yè)頭部肯定加了<%@ taglib prefix="s" uri="/struts-tags" %>的  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 10:32 | orchlon
          @Jeff

          我記得IE上不顯示圖片,
          但是firefox上能夠正常顯示。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 10:48 | javaman
          datetimepicker 的樣式很不好看,而且還看不清楚,有什么辦法可以改哈他的樣式?  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 11:36 | terry
          強(qiáng)烈建議Max建個(gè)QQ群,大家方便交流struts2.0里東西,呵呵  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-22 13:05 | javaman
          支持!~  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 18:49 | Max
          @javaman
          最簡(jiǎn)單的方法用“查看源代碼”方式,查看日歷的樣式,再作相應(yīng)修改。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 18:51 | Max
          @terry
          @javaman
          我覺得QQ群太濫了,大家認(rèn)為Google論壇如何?
            回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-22 22:07 | jezz
          我在測(cè)試哪個(gè)token的時(shí)候tomcat控制臺(tái)報(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.
          請(qǐng)MAX幫我看下!以后我會(huì)經(jīng)常來的!我也在學(xué)struts2  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-23 16:46 | terry
          Max QQ群的即時(shí)消息快點(diǎn),交流起來的效率是不是要高點(diǎn)的,要不我建個(gè),5804258,我也初學(xué)struts2.0,希望大家多賜教了,呵呵  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-24 10:08 | Max
          @jezz
          你可以嘗試一下設(shè)一下<s:token />的name屬性,如<s:token name="MyToken" />.  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-24 10:19 | Max
          @javaman
          這樣寫就可以了:
          <s:textfield name="name" value="%{#session.name}"/>  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-24 10:23 | Max
          @terry
          感謝您的努力,有空大家可以進(jìn)去看看:-)  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-24 11:14 | javaman

          謝謝!  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-25 11:50 | john
          最近正在看struts2-showcase這個(gè)例子.
          看了你的文章很受啟發(fā)..謝謝了.  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-26 11:06 | TEA
          怎么修改日歷前輸入框的樣式啊?  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-05-30 17:56 | jim
          剛開始研究struts2 ,有幸看到你文章,收獲不小 ,改日能否當(dāng)面請(qǐng)教  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-30 21:23 | Max
          @TEA
          用“查看源代碼”的方式,檢查對(duì)應(yīng)的CSS類名并加修改。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-05-30 21:25 | Max
          @jim
          當(dāng)然可以,如果有機(jī)會(huì)的話。  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-06-04 23:30 | Max
          @kyo
          IDE出錯(cuò)提示,有的不用理,知道是怎么一回事就可以了。
          現(xiàn)在的JavaEE的IDE應(yīng)該還沒有支持OGNL的。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-05 10:20 | javaman
          期待你struts2的ajax標(biāo)簽,最近遇到很多問題都需要局部刷新!~  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-05 16:36 | javaman
          批量封裝對(duì)象
          這個(gè)在我的項(xiàng)目中正好用到,謝謝MAX,但是我的項(xiàng)目中需要?jiǎng)討B(tài)增加記錄,意思是增加的對(duì)象個(gè)數(shù)不定,我看你的是只有3條,要是對(duì)象個(gè)數(shù)不定是怎么作呢?
          如何動(dòng)態(tài)的添加和刪除記錄數(shù)呢??  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-07 21:58 | Oliver
          強(qiáng)烈支持博主建Google討論區(qū),大家共同學(xué)習(xí),共同進(jìn)步!QQ群太爛了,查看歷史討論信息也不方便。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-06-08 09:12 | Max
          @Oliver
          @javaman
          I'm working on it  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2007-06-16 09:53 | Oliver
          好啊,建好后通知一聲  回復(fù)  更多評(píng)論
            
          # 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ù)庫(kù)中查出
            回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-06-19 22:38 | Max
          @zzq19850814
          通過Action執(zhí)行DAO操作。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)誌的使用 2007-07-09 02:01 | JJ
          請(qǐng)問如果使用標(biāo)準(zhǔn)
          html tag的select multiple的寫法
          在action
          要如何取得值???
          用List去取值
          都是null
          有其他解嗎???  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-07-11 12:05 | jessen
          有的實(shí)例不是很明白  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-07-11 22:56 | Max
          @yiwuyun
          你是否通過下*.action訪問頁(yè)面?
          -----------------------------------------------------------------
          在瀏覽器中鍵入:http://localhost:8080/Struts2_CoolTags/doubleselect.action  回復(fù)  更多評(píng)論
            
          # 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="---請(qǐng)選擇---" doubleHeaderKey="doubleHeaderKey" doubleHeaderValue="---已選擇---"></s:optiontransferselect>

          教我下,接收有問題啊,name="admin" doubleName="admin2" 要接受這兩個(gè)東西,action里要定義什么類型?String[] admin; Object[] admin; List admin = new ArraryList();都不行,怎么搞啊  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-07-22 16:12 | mango
          我在struts.xml中加入
          <action name="*">
          <result>/{1}.jsp</result>
          </action>

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

          2、或者<s:form />標(biāo)簽中添加name屬性,如<s:form name="myForm" />  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-09-05 00:36 | Max
          @gdm
          試一下這樣:
          <s:radio label="Sex" name="sex" list="#{ 1: '男',2: '女' }" value="1"/>  回復(fù)  更多評(píng)論
            
          # 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' /> 用單引號(hào) 不過挺感謝max的回答
            回復(fù)  更多評(píng)論
            
          # 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ù)提交,但后臺(tái)顯示:
          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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-10-30 16:39 | sgwood
          對(duì)了,我的問題是:JSP為什么直接調(diào)用不成功/token為什么不正常?謝謝  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-11-09 17:19 | huazihun
          我和sgwood的問題一樣,期望max大哥抽時(shí)間給我們解決一下!謝謝  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-11-12 11:51 | 高山流水
          使用 :<s:doubleselect > 怎樣將這兩個(gè)下拉的選擇框放到下一個(gè)表格的一行的兩列中呢。。。??  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-11-12 14:01 | 高山流水
          Struts 2 怎樣實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)呢。。?  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-11-19 16:06 | gill
          這個(gè)沒想過。。。  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-11-23 11:12 | sspanzer
          @MAX
          請(qǐng)教一個(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.
          意識(shí)到是在struts.xml中少了action
          加入
          <action name="doubleselect" >
          <result>/doubleselect.jsp</result>
          </action>
          修改doubleselect.jsp為:
          <s:form action="doubleselect" >

          action訪問成功,后又試JSP方式也可,還請(qǐng)教MAX這是為何?
          試著去掉struts.devMode = false后.訪問一樣可以
          google得知struts.devMode = false指定Struts 2處于開發(fā)狀態(tài)
          還請(qǐng)解釋struts.devMode=false或true有什么區(qū)別?對(duì)開發(fā)有什么影響
          謝謝!  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2007-12-01 13:36 | Donson
          期待Max的后續(xù)文章,如自定義等等,因?yàn)槲沂怯脁html+css布局,發(fā)現(xiàn)struts2自帶的生成table,不好控制。。。。  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-22 14:06 | LING
          為什么在 幾個(gè)下拉列表中,都會(huì)有一個(gè)空的選項(xiàng) ,怎么去掉這個(gè)空的選項(xiàng)呢????  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-01-23 15:41 | kaka
          Max對(duì)你的敬佩如黃河泛濫一發(fā)不可收拾  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2008-01-31 11:16 | 無名小卒
          請(qǐng)問樓主:struts2的日期控件怎么使用?我想在頁(yè)面上判斷輸入是否正確,還有就是通過js給它賦值怎么辦啊?我始終得不到這個(gè)日期控制這個(gè)對(duì)象?  回復(fù)  更多評(píng)論
            
          # 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 這樣的功能呢。
          請(qǐng)教MAX 謝謝
          itanyang120@163.com  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2008-03-02 03:46 | fds
          @sspanzer
          fds  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2008-03-11 15:34 | lastsweetop
          十二章struts 2.0 三天看完,調(diào)試成功所有示例,累死我了

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

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

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

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

          查看網(wǎng)頁(yè)源文件發(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ù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-11-21 13:37 | javaman
          @康康
          struts2新版本引入標(biāo)簽的方式,跟之前的版本不太一樣了,你查以下官方的api文檔  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用[未登錄] 2008-11-21 13:39 | javaman
          @helen
          這樣試試
          <s:property value="user.name">   回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2009-01-20 09:13 | shuzigui
          Help!
          我在運(yùn)行你的例子的時(shí)候,只要碰到有l(wèi)ist="#{}"這不能通過調(diào)試,頁(yè)面報(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è)用途我一直都沒有用上,麻煩你解答一下。
          最真誠(chéng)的感謝!  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo)志的使用 2009-03-12 16:55 | 王銀龍
          恩,不錯(cuò)的,很好,我就是有一個(gè)小問題呢?就是我每次刷新頁(yè)面都會(huì)跳到同一個(gè)頁(yè)面,但我想指定到一個(gè)頁(yè)面應(yīng)該怎么搞呢?  回復(fù)  更多評(píng)論
            
          # re: Strus 2的新表單標(biāo) 2014-03-13 14:03 | dsa
          主站蜘蛛池模板: 小金县| 宣化县| 伊宁县| 礼泉县| 镇平县| 芒康县| 大城县| 碌曲县| 肥东县| 鞍山市| 盘山县| 黔南| 乃东县| 济源市| 临清市| 山西省| 麻江县| 万载县| 九龙城区| 鄄城县| 江城| 凌海市| 遵义县| 安庆市| 洪雅县| 彭水| 凤台县| 都昌县| 合川市| 沙坪坝区| 嘉义市| 南木林县| 三门县| 阿城市| 东海县| 漳平市| 调兵山市| 嘉善县| 务川| 荔浦县| 通许县|