ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>日本不卡免费一区,亚洲在线资源,在线国产福利网站http://www.aygfsteel.com/wangxinsh55/category/14223.htmlzh-cnThu, 27 Oct 2011 13:51:33 GMTThu, 27 Oct 2011 13:51:33 GMT60Spring事务é…置的五¿Uæ–¹å¼?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2011/10/27/362165.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 27 Oct 2011 06:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2011/10/27/362165.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/362165.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2011/10/27/362165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/362165.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/362165.html</trackback:ping><description><![CDATA[     摘è¦: åŽŸæ¥æ¥è‡ªåQšhttp://www.aygfsteel.com/robbie/archive/2009/04/05/264003.html    剿®µæ—‰™—´å¯¹Spring的事务酾|®åšäº?ji¨£n)比较深入的研究åQŒåœ¨æ­¤ä¹‹é—´å¯¹Spring的事务酾|®è™½è¯´ä¹Ÿé…ç½®˜q‡ï¼Œä½†æ˜¯ä¸€ç›´æ²¡æœ‰ä¸€ä¸ªæ¸…楚的认识。通过˜q™æ¬¡çš„å­¦ä¹?f¨¤n)å‘觉Spring的事务酾|®åªè¦æŠŠæ€èµ\ç†æ¸…åQŒè¿˜æ˜¯æ¯”较好掌æ¡çš„ã€?  &n...  <a href='http://www.aygfsteel.com/wangxinsh55/archive/2011/10/27/362165.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/362165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2011-10-27 14:31 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2011/10/27/362165.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>struts2 标签中的调用Enumæ–ÒŽ(gu¨©)³•或调用内部类中的é?r¨´n)æ€æ–¹æ³?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2011/08/24/357191.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 24 Aug 2011 06:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2011/08/24/357191.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/357191.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2011/08/24/357191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/357191.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/357191.html</trackback:ping><description><![CDATA[<div><div>com.duxiu.mobile.dao.web.WapRuleConfigDao˜q™ä¸ªä¸ÞZ¸€ä¸ªç±»åQ›CustomPage是com.duxiu.mobile.dao.web.WapRuleConfigDao¾cÖM¸­çš„Enum或是内部¾c»ï¼Œåˆ™Struts2标签中调用的æ–ÒŽ(gu¨©)³•如下åQ?/div><s:property value="@com.duxiu.mobile.dao.web.WapRuleConfigDao$CustomPage@login.value" /></div><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/357191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2011-08-24 14:48 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2011/08/24/357191.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>历å²ä¸Šå…³äºŽstruts2 é历Map最全的æ€È»“http://www.aygfsteel.com/wangxinsh55/archive/2010/09/21/332623.htmlSIMONESIMONETue, 21 Sep 2010 09:56:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/09/21/332623.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/332623.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/09/21/332623.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/332623.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/332623.htmlStruts2中iterator标签é历mapæ€È»“

é’ˆå¯¹ä»¥ä¸‹å‡ ç§æƒ…况的Map:

  •     private Map<String,String> map;   
  •       
  •     private Map<String,Student> studentMap;   
  •        
  •     private Map<String,String[]> arrayMap;   
  •        
  •     private Map<String,List<Student>> listMap;

  •  


  •         map=new HashMap<String,String>();   
  •         map.put("1""one");   
  •         map.put("2""two");   
  • 用法åQ?/p>

  •    <s:iterator value="map" id="column">   
  •    <s:property value="#column"/><br>   
  •    key: <s:property value="key"/><br>   
  •    value:<s:property value="value"/><br>  
  •   </s:iterator>   
  •  


  •         studentMap=new HashMap<String,Student>();   
  •         studentMap.put("student1",new Student(new Long(1),"20034140201","张三1","ç”?,25));   
  •         studentMap.put("student2",new Student(new Long(2),"20034140202","张三2","å¥?,26));   
  •         studentMap.put("student3",new Student(new Long(3),"20034140202","张三3","ç”?,27));    
  • 用法åQ?/p>

     

  •     <s:iterator value="studentMap" id="column">   
  •     <tr>   
  •      <td><s:property value="#column"/></td>   
  •      <td><s:property value="value.id"/></td>   
  •      <td><s:property value="value.num"/></td>   
  •      <td><s:property value="value.name"/></td>   
  •      <td><s:property value="value.sex"/></td>   
  •      <td><s:property value="value.age"/></td>   
  •     </tr>   
  •     </s:iterator> 
  •  


  •         arrayMap=new HashMap<String,String[]>();   
  •         arrayMap.put("arr1"new String[]{"1","2003401","leejie","male","20"});   
  •         arrayMap.put("arr2"new String[]{"2","2003402","huanglie","male","25"});   
  •         arrayMap.put("arr3"new String[]{"3","2003403","lixiaoning","male","21"});   
  •            
  • 用法

     

  •     <s:iterator value="arrayMap" id="column">   
  •     <tr>   
  •      <td><s:property value="#column"/></td>   
  •      <td><s:property value="value[0]"/></td>   
  •      <td><s:property value="value[1]"/></td>   
  •      <td><s:property value="value[2]"/></td>   
  •      <td><s:property value="value[3]"/></td>   
  •      <td><s:property value="value[4]"/></td>   
  •     </tr>   
  •     </s:iterator>  
  •  


  •            
  •         listMap=new HashMap<String,List<Student>>();   
  •            
  •         List<Student> list1=new ArrayList<Student>();   
  •         list1.add(new Student(new Long(1),"20034140201","张三1","ç”?,25));   
  •         list1.add(new Student(new Long(2),"20034140202","张三2","ç”?,25));   
  •         list1.add(new Student(new Long(3),"20034140203","张三3","ç”?,25));   
  •         listMap.put("class1", list1);   
  •            
  •         List<Student> list2=new ArrayList<Student>();   
  •         list2.add(new Student(new Long(1),"20034140301","æŽå››1","ç”?,20));   
  •         list2.add(new Student(new Long(2),"20034140302","æŽå››2","ç”?,21));   
  •         list2.add(new Student(new Long(3),"20034140303","æŽå››3","ç”?,22));   
  •         list2.add(new Student(new Long(4),"20034140304","æŽå››4","ç”?,23));   
  •         listMap.put("class2", list2);   
  •  

    用法åQ?/p>

  •    <s:iterator value="listMap" id="column">   
  •      <s:set name="total" value="#column.value.size"/>   
  •      <s:iterator value="#column.value" status="s">   
  •       <tr>   
  •         <s:if test="#s.first"><td rowspan="${total}"><s:property value="#column.key"/></td></s:if>   
  •         <td><s:property value="id"/></td>   
  •         <td><s:property value="num"/></td>   
  •         <td><s:property value="name"/></td>   
  •         <td><s:property value="sex"/></td>   
  •         <td><s:property value="age"/></td>   
  •       </tr>   
  •      </s:iterator>   
  •   </s:iterator>  


  • ]]>
    SpringSide 3 ä¸­çš„å¤šæ•°æ®æºé…置的问é¢?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2010/02/25/313859.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 25 Feb 2010 02:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2010/02/25/313859.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/313859.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2010/02/25/313859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/313859.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/313859.html</trackback:ping><description><![CDATA[     摘è¦: 在SpringSide 3 中,白è¡£æä¾›çš„预先酾|®å¥½çš„环境éžå¸¸æœ‰åˆ©äºŽç”¨æˆ·˜q›è¡Œå¿«é€Ÿå¼€å‘ï¼Œä½†æ˜¯åŒæ—¶ä¹Ÿä¼š(x¨¬)为扩展带æ¥ä¸€äº›å›°éš¾ã€‚最直接的例å­å°±æ˜¯å…³äºŽåœ¨™å¹ç›®ä¸­ä‹Éç”¨å¤šä¸ªæ•°æ®æºçš„问题,ä¼ég¹Ž 很难æžã€‚在上一½‹‡ä¸­åQŒæˆ‘探讨äº?ji¨£n)SpringSide 3 中的数æ®è®‰K—®å±‚,在这一½‹‡ä¸­åQŒæˆ‘ç«‹å¿—è¦è§£å†›_¤šæ•°æ®æºé…¾|®çš„éšùN¢˜åQŒæˆ‘çš„æ€èµ\是这æ ïL(f¨¥ng)š„åQ? ½W¬ä¸€æ­¥ã€æµ‹è¯•能å¦é…¾|®å¤šä¸ªDataSource ½W¬äºŒæ­¥ã€æµ‹è¯•能å¦é…¾|®å¤šä¸ªSessi...  <a href='http://www.aygfsteel.com/wangxinsh55/archive/2010/02/25/313859.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/313859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2010-02-25 10:27 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2010/02/25/313859.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>S2SH 框架 åŸÞZºŽannotationé…ç½®http://www.aygfsteel.com/wangxinsh55/archive/2010/02/24/313835.htmlSIMONESIMONEWed, 24 Feb 2010 14:06:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/02/24/313835.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/313835.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/02/24/313835.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/313835.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/313835.html阅读全文

    ]]>
    struts2+springå‘é€mailhttp://www.aygfsteel.com/wangxinsh55/archive/2009/05/15/270872.htmlSIMONESIMONEFri, 15 May 2009 08:27:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2009/05/15/270872.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/270872.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2009/05/15/270872.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/270872.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/270872.html

      spring中有集æˆäº?ji¨£n)javamailåQŒåœ¨ä½¿ç”¨æ¡†æž¶çš„æ—¶å€™ç”¨springæ¥å‘é€mailä¹Ÿæ˜¯å¾ˆæ–¹ä¾¿çš„ã€‚ä¸‹é¢æ˜¯ä¸€ä¸ªspring mailçš„å°ä¾‹å­ã€?/p>

      在这个例å­ä¸­åQŒé™¤äº?ji¨£n)需è¦strutså’Œspring的框架外åQŒè¿˜éœ€è¦mail.jar,activation.jar.

      web.xml的代ç ï¼š(x¨¬)

      <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4"
     xmlns="  xmlns:xsi="  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:spring/*.xml</param-value>
     </context-param>

     <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
        <!-- Spring refresh Introspector to prevent from out of memory  -->
     <listener>
      <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
     </listener>
     <!-- Support session scope, Spring bean -->
     <listener>                                                       
          <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
     </listener>
     <!-- Struts2 Action Mapping-->
     <filter>
            <filter-name>struts2</filter-name>
            <filter-class>
                org.apache.struts2.dispatcher.FilterDispatcher
            </filter-class>
        </filter>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
       <!-- session time out -->
     <session-config>
      <session-timeout>30</session-timeout>
     </session-config>
     <!-- default index -->
     <welcome-file-list>
      <welcome-file>send.jsp</welcome-file>
     </welcome-file-list>
    </web-app>
    Java¾c»MailAction.java:

    package action;

    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSenderImpl;

    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionSupport;
    public class MailAction extends ActionSupport{
     private JavaMailSenderImpl mailSender;
     private SimpleMailMessage mailMessage;
      public String sendMail(){
      SimpleMailMessage msg = new SimpleMailMessage(mailMessage);
            msg.setText("Spring Mail Simple!");
            mailSender.send(msg);
            return Action.SUCCESS;
     }
      public void setMailMessage(SimpleMailMessage mailMessage) {
      this.mailMessage = mailMessage;
     }

     public void setMailSender(JavaMailSenderImpl mailSender) {
      this.mailSender = mailSender;
     }

    }
    springé…置文äšgapplicationContext.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="
        xmlns:xsi="     xmlns:aop="     xmlns:tx="     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
               http://www.springframework.org/schema/tx     default-autowire="byName" default-lazy-init="true">

     <bean id="mailAction" class="action.MailAction">
      <property name="mailSender" ref="mailSender"/>
      <property name="mailMessage" ref="mailMessage"/>
     </bean>
     
     <bean id="mailSender"
              class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtp.163.com"/>
                <!-- mail  account   -->
            <property name="username" value="shwwwx"/>
            <property name="password" value="wwx1226"/>
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.smtp.auth">true</prop>
                </props>
            </property>
        </bean>
          <!-- mail template -->
        <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
            <property name="to" value="
    shwwwx@163.com,nabelun@163.com"/>
            <property name="from" value="shwwwx@163.com"/>
            <property name="subject" value="Mail Simple"/>
        </bean>
    </beans>

    struts2的酾|®æ–‡ä»¶struts.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        " <struts>
        <constant name="struts.objectFactory" value="spring" />
        <constant name="struts.devMode" value="false" />
        <constant name="struts.i18n.encoding" value="utf-8" />
        <package name="springtimer"   extends="struts-default">
           <action name="mailsend" class="mailAction" method="sendMail">
            <result>sendok.jsp</result>
            <interceptor-ref name="defaultStack"/>
           </action>
        </package>
    </struts>
    ™åµé¢send.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
      <head>
        <title>My JSP 'send.jsp' starting page</title>
      </head>
      <body>
     <form action="mailsend.action" method="post">
      <input type="submit" value="é‚®äšgå‘é€?>
     </form>
      </body>
    </html>

    ™åµé¢sendok.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'sendok.jsp' starting page</title>
      </head>
      <body>
        Send Mail Success! <br>
      </body>
    </html>
    ˜q行send.jspå‘é€é‚®ä»Óž¼ŒæˆåŠŸçš„è¯ä¼?x¨¬)蟩转到sendok.jsp™åµé¢ã€?/p>

    ]]>
    struts2中二¾l´æ•°¾l„的昄¡¤ºhttp://www.aygfsteel.com/wangxinsh55/archive/2009/02/24/256486.htmlSIMONESIMONETue, 24 Feb 2009 09:50:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2009/02/24/256486.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/256486.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2009/02/24/256486.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/256486.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/256486.html

    1ã€ç”¨ä¸¤é‡å¾ªçŽ¯çš„æ–¹æ³?/p>

    <s:iterator id="data1" value="#request.data" status="d1">
    <s:iterator id="data2" value="#request.data1" status="d2">
    <s:property value="#data2"/>
    </s:iterator>
    </s:iterator>

    2ã€ç”¨ä¸€é‡åó@环的æ–ÒŽ(gu¨©)³•

    <s:iterator value="collection1" status="status">
    <s:property value="collection1[#status.index][0]"/>
    <s:property value="collection1[#status.index][1]"/>
    </s:iterator> 



    ]]>
    Struts AjaxTagshttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.htmlSIMONESIMONEWed, 22 Nov 2006 06:10:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/82757.htmlFrank W. Zammetti扩展äº?ji¨£n)Strutsçš„Tag库,使Struts具备äº?ji¨£n)AJAX功能ã€?
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) åQˆæ³¨åQšä¸‹é¢çš„代ç å¼•用è‡?strong>Frank W. Zammetti çš„ajaxtags包)(j¨ª)
     (t¨©ng)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) Tag库的扩展
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 1ã€FormTag
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 增加äº?ji¨£n)refAjax属性以å?qi¨¢ng)setterå’Œgetteræ–ÒŽ(gu¨©)³•åQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 2ã€BaseHandlerTag
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 增加äº?ji¨£n)refAjax属性以å?qi¨¢ng)setterå’Œgetteræ–ÒŽ(gu¨©)³•åQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) åŒæ—¶æ‰©å±•äº?ji¨£n)prepare×××Eventsæ–ÒŽ(gu¨©)³•åQŒä‹É其加载Ajax属性,如:(x¨¬)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) if (getOnkeydown() != null) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/* Frank W. Zammetti */
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)else {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng)prepareAjax("onkeydown", handlers);
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/* Frank W. Zammetti */
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 3ã€Struts-Html.tld
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 增加äº?ji¨£n)refAjax属性;
     (t¨©ng)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)应用
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 1ã€ajax-config.xml
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <form ajaxRef="example1">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng)<element ajaxRef="button">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng)<event type="onclick">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //å‘é€è¯·æ±‚的讄¡½®
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<requestHandler type="std:QueryString">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<target>example1.do</target>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<parameter>firstName=firstName,lastName=lastName</parameter>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</requestHandler>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //回调函数åQˆæ–¹æ³•)(j¨ª)å?qi¨¢ng)回写区域的讄¡½?br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<responseHandler type="std:InnerHTML">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<parameter>example1_resultLayer</parameter>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</responseHandler>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</event>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng)</element>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) </form>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)2ã€struts-config.xml
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //与其它Action的区别是åQšAjax调用的Action没有inputå’Œforward
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <action path="/example1" name="example1Form" scope="request"
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng)type="com.omnytex.ajaxtags.Example1Action" />
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //Ajax Tag Plugin
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <plug-in className="org.apache.struts.taglib.html.ajax.AjaxInit" />
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 3ã€Jsp客户界é¢
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //对应于ajax-config.xml中的form ajaxRef
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <html:form action="example1" ajaxRef="example1">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //对应于ajax-config.xml中的Element ajaxRef
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <html:button property="button" value="Click to do Ajax!" ajaxRef="button" />
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </html:form>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Result:<br>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)//对应于ajax-config.xml中的responseHandler
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<span id="example1_resultLayer">&nbsp;</span>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //å¯ç”¨AjaxåQˆåº”该放在Jsp的最åŽï¼‰(j¨ª)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <html:enableAjax />
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 4ã€Action
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng)public ActionForward execute( ...... ) (t¨©ng)throws Exception {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) try {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //Ajaxçš„Action需è¦è¾“出内容到out
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) PrintWriter out = response.getWriter();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng)out.println(......);
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng)out.flush();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng)out.close();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (Exception e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) (t¨©ng) System.err.println("Exception in Example1Action.execute(): " + e);
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //ç”׃ºŽAjaxçš„Action输出的内容由™åµé¢çš„区域接æ”Óž¼Œä¸éœ€è¦èŸ©è½¬åˆ°å…¶å®ƒ™åµé¢
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //所以,˜q”回null
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) (t¨©ng) return null;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ......
     (t¨©ng)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Struts Ajax Tag工作原ç†
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)1ã€Strutså¯åЍåQŒåŠ è½½AjaxInitåQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 2ã€AjaxInitè§£æžajax-config.xmlåQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 3ã€Struts加è²AjaxEnabledçš„JspåQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 4ã€Struts-AjaxTagæ ÒŽ(gu¨©)®Form ajaxRefå’Œelment ajaxRef扑ֈ°ajax-config的设¾|®ï¼›
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 5ã€è¾“出AjaxEnabledçš„HtmlåQˆTag库加入了(ji¨£n)Ajax需è¦çš„ScriptåQŒå¦‚åQšXMLHttpRequeståQ‰ï¼›
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 6ã€ç”¨æˆ¯‚¾“入数æ®ï¼Œæäº¤æ•°æ®åQˆå¼‚æ­¥æ¨¡å¼æäº¤åŽåQŒç”¨æˆ·å¯ä»¥ç‘ô¾l­å…¶å®ƒæ“作)(j¨ª)åQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 7ã€XMLHttpRequest对象接管æäº¤æ•°æ®åQŒåƈå‘Strutsæäº¤doå?qi¨¢ng)傿•ŽÍ¼?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 8ã€Struts ActionServlet加è²FormBeanåQŒå’Œç›¸åº”çš„ActionåQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 9ã€Struts Action执行相应逻辑åQŒå¾—到返回的数æ®åQŒé€šè¿‡out输出åQ?/div>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 10ã€XMLHttpRequest得到Struts˜q”回的数æ®ï¼›
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)11ã€XMLHttpRequest调用讄¡½®çš„回调函敎ͼˆæ–ÒŽ(gu¨©)³•åQ‰ï¼Œè¾“出数æ®åˆ°æŒ‡å®šçš„区域åQ?/div>

    ]]>Struts下拉èœå•对应昄¡¤º(getDirectLabelValueBean )http://www.aygfsteel.com/wangxinsh55/archive/2006/11/16/81439.htmlSIMONESIMONEThu, 16 Nov 2006 01:44:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/16/81439.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/81439.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/16/81439.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/81439.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/81439.html2006-10-31 19:55

    ****************************************************************************************************************

    DAO里é¢å¦‚下写:(x¨¬)

    package com.sinoconcept.match.dao.impl;

    import java.util.List;

    import org.springframework.dao.DataAccessException;

    import com.sinoconcept.match.dao.DirctDAO;

    public class DirctDAOImpl extends BaseDAOHibernateImpl implements DirctDAO {

     (t¨©ng)public List loadAll(String className) {
     (t¨©ng) (t¨©ng)
     (t¨©ng) (t¨©ng)try {
     (t¨©ng) (t¨©ng) (t¨©ng)return this.getHibernateTemplate().loadAll(Class.forName(className));
     (t¨©ng) (t¨©ng)} catch (DataAccessException e) {
     (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng)} catch (ClassNotFoundException e) {
     (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng)return null;
     (t¨©ng)}

    }

    ***************************************************************************************************************

    service里如下写åQ?/strong>

    package com.sinoconcept.match.service.impl;

    import java.lang.reflect.InvocationTargetException;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;

    import org.apache.struts.util.LabelValueBean;

    import com.sinoconcept.match.dao.DirctDAO;
    import com.sinoconcept.match.service.DirctService;

    public class DirctServiceImpl implements DirctService {
     (t¨©ng)private DirctDAO dirctDAO;

     (t¨©ng)public List getDirect(String dirName) {

     (t¨©ng) (t¨©ng)List result = this.getDir(dirName);
     (t¨©ng) (t¨©ng)return result;
     (t¨©ng)}

     (t¨©ng)public List getDirectLabelValueBean(String dirName) {

     (t¨©ng) (t¨©ng)List result = this.getDirLableValueBean(dirName);
     (t¨©ng) (t¨©ng)return result;
     (t¨©ng)}

     (t¨©ng)public List getDir(String dirName) {
     (t¨©ng) (t¨©ng)List result = null;

     (t¨©ng) (t¨©ng)result = dirctDAO.loadAll(dirName);

     (t¨©ng) (t¨©ng)return result;
     (t¨©ng)}

     (t¨©ng)@SuppressWarnings("unchecked")
     (t¨©ng)public List getDirLableValueBean(String dirName) {
     (t¨©ng) (t¨©ng)List result = new LinkedList();
     (t¨©ng) (t¨©ng)List list = getDir(dirName);
     (t¨©ng) (t¨©ng)I(y¨ªng)terator it = list.iterator();
     (t¨©ng) (t¨©ng)while (it.hasNext()) {
     (t¨©ng) (t¨©ng) (t¨©ng)Object obj = it.next();
     (t¨©ng) (t¨©ng) (t¨©ng)LabelValueBean lv = new LabelValueBean();
     (t¨©ng) (t¨©ng) (t¨©ng)String label = null;
     (t¨©ng) (t¨©ng) (t¨©ng)try {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)label = obj.getClass().getMethod("getName", new Class[] {})
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).invoke(obj, null).toString();
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (Exception e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)try {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)label = obj.getClass()
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).getMethod("getValue", new Class[] {}).invoke(obj,
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)null).toString();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalArgumentException e1) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e1.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (SecurityException e1) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e1.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalAccessException e1) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e1.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (InvocationTargetException e1) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e1.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (NoSuchMethodException e1) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e1.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng)} finally {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)if (label == null)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)try {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)label = label = obj.getClass().getMethod("getValue",
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)new Class[] {}).invoke(obj, null).toString();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalArgumentException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (SecurityException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalAccessException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (InvocationTargetException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)} catch (NoSuchMethodException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng)lv.setLabel(label);
     (t¨©ng) (t¨©ng) (t¨©ng)try {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)lv.setValue(obj.getClass().getMethod("getId", new Class[] {})
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).invoke(obj, null).toString());
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalArgumentException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (SecurityException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (IllegalAccessException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (InvocationTargetException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng)} catch (NoSuchMethodException e) {
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// TODO Auto-generated catch block
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)e.printStackTrace();
     (t¨©ng) (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng) (t¨©ng)result.add(lv);
     (t¨©ng) (t¨©ng)}
     (t¨©ng) (t¨©ng)return result;
     (t¨©ng)}

     (t¨©ng)public DirctDAO getDirctDAO() {
     (t¨©ng) (t¨©ng)return dirctDAO;
     (t¨©ng)}

     (t¨©ng)public void setDirctDAO(DirctDAO dirctDAO) {
     (t¨©ng) (t¨©ng)this.dirctDAO = dirctDAO;
     (t¨©ng)}

    }

    ***********************************************************************************************************************

    Action里é¢å¦‚下讄¡½®åQ?/p>

    String status = request.getParameter("status");
     (t¨©ng) (t¨©ng)if (status == null || status.equals("")) {
     (t¨©ng) (t¨©ng) (t¨©ng)status = "0";
     (t¨©ng) (t¨©ng)}

    List sttusList = dirctService
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).getDirectLabelValueBean("com.sinoconcept.match.domain.DrStatus");//æ•°æ®å­—å…¸è¡?/strong>

    //DrStatus æ•°æ®æ˜ è®¾æ–‡äšgåªè¦äºŒä¸ªå­—段åQšprivate Integer idåQ›private String value;

    manDiaryForm.setStatus(status);

    request.setAttribute("statusList", sttusList);

    ****************************************************************************************************************

    ™åµé¢ä¸Šå¦‚下获得:(x¨¬)

    <html:select property="status" onchange="sel()">
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<html:optionsCollection name="statusList" />
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</html:select>



    ]]>Struts Validation框架‹¹…å°2http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64197.htmlSIMONESIMONEThu, 17 Aug 2006 11:51:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64197.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/64197.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64197.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/64197.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/64197.html javascript 支æŒ

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) åœ?/span> web 应用中,使用 javascript 的机ä¼?x¨¬)éžå¸¸å¤šã€‚虽然丞®‘书上æå?qi¨¢ng)客æˆähœ‰å¯èƒ½ä»Žæµè§ˆå™¨å…³é—­ js çš„æ‰§è¡Œï¼Œä½†æ˜¯è¦æƒ³å®Œå…¨çš„ä¸ä½¿ç”¨å®ƒï¼Œç›®å‰çœ‹æ¥å¥½åƒ˜q˜ä(sh¨´)¸è¡Œã€‚æ¯”å¦‚ä¸€äº›å¤æ‚çš„ UI 是必™å»é€šè¿‡ js æ¥å®žçŽ°çš„åQˆå¦‚下拉å¼èœå•ç­‰½{‰ï¼‰(j¨ª)。那ä¹?/span> validation æ¡†æž¶æ”¯ä¸æ”¯æŒå®¢æˆ·ç«¯çš„ js 验è¯å‘¢ï¼Ÿ

    ½{”案是:(x¨¬)å½“ç„¶ã€‚å…·ä½“åšæ³•是åQ?/span>

    - (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 在页é?/span> html:form 标签内部æ·ÕdŠ  onsubmit="return validateEditForm(this);" åQˆå…·ä½“的语法åQ?/span> validate+ åœ?/span> validation.xml æ–‡äšg中定义的 form çš„å字)(j¨ª)åQ›å¦‚åQ?/span>

    <html:form action="<%=action%>" method="post" onsubmit="return validateEditForm(this);">

    - (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) åœ?/span> html:form 内部å—中æ·ÕdŠ åQ?/span> <html:javascript formName="editForm"/>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 如此 2 æ­¥å³å¯ã€‚虽ç„?d¨°ng)ž¼?/span> validation 框架éžå¸¸½Ž€å•易用,但是˜q˜æ˜¯æœ‰éœ€è¦æ³¨æ„的地方ã€?/span>

    使用注æ„

    1. (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 使用 validation 框架åŽï¼Œ form å¿…é¡»ä»?/span> ValidatorForm ä¸­æ´¾ç”Ÿï¼ŒåŒæ—¶å¿…须在你çš?/span> validate æ–ÒŽ(gu¨©)³•中先调用基类çš?/span> validate æ–ÒŽ(gu¨©)³•。对于ä‹Éç”?/span> Dyna 开头的æ–ÒŽ(gu¨©)³•æ¥åˆ›å»?/span> formbean çš„è¯»è€…ï¼Œä½ ä¹Ÿå¿…é¡»æ”¹äØ“(f¨´)ä»?/span> dyna 开头嫿œ?/span> validator çš?/span> form ã€?/span>

    2. (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) æ³¨æ„ DynaValidatorForm åQ?/span> ValidatorForm åQ‰å’Œ DynaValidatorActionForm åQ?/span> ValidatorActionForm åQ‰çš„区别。刚开始时从帮助中没看明白˜q?/span> 2 者的区别åQŒåŽæ¥ä»Ž¾|‘上一½‹‡æ–‡ç« ä¸­å¾—到äº?ji¨£n)用法的区别。å‰è€…主è¦çš„视角æ˜?/span> formbean åQŒè€ŒåŽè€…的视角æ˜?/span> action ã€?/span>

    å½?/span> formbean 被ä¸åŒçš„ action 使用æ—Óž¼Œå¯¹äºŽä¸åŒçš?/span> action 而言åQŒä‹É用的 formbean çš„å±žæ€§é›†åˆæœ‰å¤§æœ‰ž®ã€‚此时如果ä»ç„¶ä»¥ formbean ä¸ÞZ¸»ä½“,ä¼?x¨¬)造æˆå…¶ä»– action çš„ä¸æ­£å¸¸ä½¿ç”¨ã€‚因此, struts 中æå‡ÞZº†(ji¨£n) DynaValidatorActionForm åQ?/span> ValidatorActionForm åQ‰ã€‚此时在 validation.xml 中的 form 标签çš?/span> name 属性改ä¸?/span> action çš?/span> path 属性,åˆç”±äº?/span> action 中有 attribute å’?/span> name 属性, validation 框架ž®±å¯æ ÒŽ(gu¨©)®˜q™ä¸ª action 得到对应çš?/span> formbean 。例å­ï¼š(x¨¬)

    <formset>

     (t¨©ng) <form name="/createAddress">

     (t¨©ng) (t¨©ng) (t¨©ng) <field property="city"

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) depends="required">

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <arg0 key="prompt.city"/>

     (t¨©ng) (t¨©ng) (t¨©ng) </field>

     (t¨©ng) </form>

     (t¨©ng) <form name="/editAddress">

     (t¨©ng) (t¨©ng) (t¨©ng) <field property="state"

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) depends="required">

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <arg0 key="prompt.state"/>

     (t¨©ng) (t¨©ng) (t¨©ng) </field>

     (t¨©ng) </form>

    </formset>

    3. (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ä¸?/span> DispatchAction çš„é…åˆã€?/span> Struts1.1 çš?/span> DispatchAction 使得相关çš?/span> Action 的关¾pÈ´§å¯†ï¼Œå¤§å¤§å‡å°‘äº?ji¨£n)应用ä¸?/span> Action 的个敎ͼŒä½†æ˜¯éšä¹‹è€Œæ¥ä¹Ÿå¸¦æ¥äº†(ji¨£n)使用 Validation 框架的ä¸ä¾¿ï¼Œä¸èƒ½ä¸è¯´æ˜¯ä¸€ä¸ªé—æ†¾ã€‚è¯»è€…ä¹Ÿè®¸è®¤ä¸ø™¿™¿U情况å¯ä»¥ä‹É用第 2 æ¡çš„解决æ–ÒŽ(gu¨©)¡ˆæ¥è§£å†»I¼Œå³é‡‡ç”?/span> DyanValidatorActionForm åQŒç„¶åŽåœ¨ Validation.xml æ–‡äšgä¸?/span> form çš„å¿UîC‹É用ä¸åŒçš„ Actiond çš?/span> path åQŒå³åœ?/span> validation.xml 中ä‹É用:(x¨¬) <form name="/user.do?method=doAdd"> ã€?/span>  (t¨©ng) (t¨©ng) (t¨©ng) <form name="/user.do?method=doLoad"> 。然而,在目å‰çš„版本ä¸?/span> Validation 框架òq¶ä¸æ”¯æŒ˜q™ç§è¾¨è®¤ã€‚一¿U绕˜q‡è¿™ä¸ªæƒ…å†ëŠš„æ–ÒŽ(gu¨©)³•是,针对åŒä¸€ä¸?/span> Action 实现¾cÕdœ¨ Struts-config.xml æ–‡äšg中定义多ä¸?/span> Action çš?/span> path åQŒåœ¨ä¸éœ€è¦è¿›è¡ŒéªŒè¯çš„地方ž®?/span> Action çš?/span> validate 属性置ä¸?/span> false 。å³åQ?/span>

    struts-config.xml åQ?/span>

    <action attribute="editForm" path="/user" name="editForm" input="/editUser.jsp"

    parameter="method" scope="request" type="foxgem.struts.UserDispatchAction"

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) validate="true">

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <forward name="load" path="/editUser.jsp"/>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <forward name="action" path="/userquery.do?pageId=1"/>

    </action>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)

    <action attribute="editForm" path="/loaduser" name="editForm" input="/editUser.jsp"

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) parameter="method" scope="request" type="foxgem.struts.UserDispatchAction"

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)  (t¨©ng) validate="false">

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <forward name="load" path="/editUser.jsp"/>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <forward name="action" path="/userquery.do?pageId=1"/>

    </action>

    ç„¶åŽåœ?/span> validation.xml æ–‡äšg中ä‹Éç”?/span> 2 的方法ã€?/span>

    ¾l“æŸè¯?/font>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) æ€Èš„说æ¥åQ?/span> validation 框架大大的æé«˜ä(sh¨´)º†(ji¨£n)™åµé¢éªŒè¯çš„开呿•ˆçŽ‡ï¼Œæ›´å¸å¼•äh的是˜q™äº›éªŒè¯æ–ÒŽ(gu¨©)³•å¯é€šè¿‡è‡ªå®šä¹‰çš„ validator æ¥å¾—到å¤ç”¨ã€‚ä‹É得这些验è¯ä»£ç æ›´åŠ é›†ä¸­ï¼Œå¯ç»´æŠ¤æ€§å¾—到加强。当焉™šç€™å¹ç›®çš„进行, validation.xml å’?/span> validator-rules.xml ä¼?x¨¬)éšä¹‹å¢žé•¿ï¼Œ˜q™éƒ¨åˆ†çš„¾l´æŠ¤å·¥ä½œåŠ é‡äº?ji¨£n)ã€?/span>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) åŒæ—¶åQŒç”±äºŽä¸èƒ½éžå¸¸å¥½çš„å’Œ DispatchAction 一起å作,也ä‹É得大é‡ä‹Éç”?/span> DispatchAction 的项目ä¸èƒ½éžå¸¸å¥½çš„ä‹É用它。å¾è®®å¤§é‡ä‹Éç”?/span> DispatchAction 和页é¢éªŒè¯éžå¸¸å¤æ‚多å˜çš„™å¹ç›®å¯ä»¥æš‚时按原æ¥çš„æ–ÒŽ(gu¨©)³•æ¥éªŒè¯ï¼Œä¸ä‹Éç”?/span> validation 框架ã€?/span>

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 至于 validation 框架的其他详¾l†ä¿¡æ¯ï¼Œè¯·å‚è§?/span> struts 的文档,在此ä¸å†èµ˜è¿°ã€?/span>

    å‚考资æ–?/font>

    n (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) http://raibledesigns.com/wiki/Wiki.jsp?page=SecuringDispatchAction DispatchAction ä¸?/span> validation 框架的å作解å†Ïx(ch¨®ng)–¹æ¡ˆæ¥æºäºŽæ­¤ã€?/span>

    n (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) http://otn.oracle.com/oramag/oracle/04-jan/o14dev_struts.html Check Your Form with Validator

    n (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) http://www-900.ibm.com/developerWorks/cn/java/l-struts1-1/ 深入 Struts 1.1

    n (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) http://javaboutique.internet.com/tutorials/Struts11Val/ Stepping through the Struts 1.1 Validator



    ]]>
    Struts Validator验è¯å™¨ä‹É用指å?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64191.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 11:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64191.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/64191.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/64191.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/64191.html</trackback:ping><description><![CDATA[     摘è¦: 作者:(x¨¬) David Winterfeldt å¤§å« James Turner 詹姆æ–? Rob Leland ¾|—伯ç‰? ¾˜»è¯‘åQ?  (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 侯æ€è¶… 验è¯å™¨ï¼š(x¨¬) ...  <a href='http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64191.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/64191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 19:32 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64191.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>strutsã€springã€hibernate中文ä¹Þq é—®é¢˜è§£å†³ http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64185.htmlSIMONESIMONEThu, 17 Aug 2006 11:01:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64185.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/64185.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64185.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/64185.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/64185.html  (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ˜q‘æ—¥åQŒä‹É用struts 1.1åQŒå‘现讨厌的中文ä¹Þq é—®é¢˜åQŒåœ¨form的传é€è¿‡½E‹å’Œå…¥åº“时候出现。就我在¾|‘络上找的方法罗列如下:(x¨¬)
    åQˆTomcat 5.0.28+struts 1.1+hibernate 2.1+sqlserver2kåQ?br />1.直接转编ç public static String isoToGB(String src){ (t¨©ng) (t¨©ng) (t¨©ng)
    String strRet=null; (t¨©ng) (t¨©ng) (t¨©ng)
    try{ (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
     (t¨©ng) strRet = new String(src.getBytes("ISO_8859_1"),"GB2312"); (t¨©ng) (t¨©ng)
     (t¨©ng) }catch(Exception e) (t¨©ng) (t¨©ng) (t¨©ng) { (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
    } (t¨©ng) (t¨©ng) (t¨©ng) return strRet;
    }通过一个函数è{¾~–ç åQŒæˆ‘没有æˆåŠŸåQŒä¸çŸ¥äØ“(f¨´)何ï¼

    2.˜q‡æ×o(h¨´)filter讄¡½®æ³?br />
    package yourbean;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;

    public class servfilter extends HttpServlet implements Filter { (t¨©ng) private FilterConfig filterConfig; (t¨©ng) //Handle the passed-in FilterConfig (t¨©ng) public void init(FilterConfig filterConfig) { (t¨©ng) (t¨©ng) (t¨©ng) this.filterConfig = filterConfig; (t¨©ng) } (t¨©ng) //Process the request/response pair (t¨©ng) public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) { (t¨©ng) (t¨©ng) (t¨©ng) try { (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) request.setCharacterEncoding("GB2312"); (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ((HttpServletResponse)response).setHeader("Cache-control","no-cache"); (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) response.setHeader("Pragma","No-cache"); (t¨©ng)response.setHeader("Cache-Control","no-cache"); (t¨©ng)response.setHeader("Expires","0"); (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) ((HttpServletResponse)response).setHeader("Pragram","no-cache"); (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) filterChain.doFilter(request, response); (t¨©ng) (t¨©ng) (t¨©ng) } (t¨©ng) (t¨©ng) (t¨©ng) catch(ServletException sx) { (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) filterConfig.getServletContext().log(sx.getMessage()); (t¨©ng) (t¨©ng) (t¨©ng) } (t¨©ng) (t¨©ng) (t¨©ng) catch(IOException iox) { (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) filterConfig.getServletContext().log(iox.getMessage()); (t¨©ng) (t¨©ng) (t¨©ng) } (t¨©ng) } (t¨©ng) //Clean up resources (t¨©ng) public void destroy() { (t¨©ng) }}䏋颿˜¯ä¸€ä¸ªweb.xmlæ–‡äšg你用jbuilder写上é¢çš„bean的时候会(x¨¬)生æˆä¸€ä¸?lt;?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app (t¨©ng) (t¨©ng) (t¨©ng) PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" (t¨©ng) (t¨©ng) (t¨©ng) "http://java.sun.com/dtd/web-app_2_3.dtd">

    <web-app> (t¨©ng) <display-name>Welcome to Tomcat</display-name> (t¨©ng) <description> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) Welcome to Tomcat (t¨©ng) </description> (t¨©ng) <filter> (t¨©ng) (t¨©ng) (t¨©ng) <filter-name>servfilter</filter-name> (t¨©ng) (t¨©ng) (t¨©ng) <filter-class>yourbean.servfilter</filter-class> (t¨©ng) </filter> (t¨©ng) <filter-mapping> (t¨©ng) (t¨©ng) (t¨©ng) <filter-name>servfilter</filter-name> (t¨©ng) (t¨©ng) (t¨©ng) <url-pattern>/*</url-pattern> (t¨©ng) </filter-mapping></web-app>把上é¢çš„servfilter¾~–译攑֜¨ä½ çš„web-inf/classes/yourbean/下web.xml攑֜¨web-inf/下和classes在一个目录下在æ¯ä¸ªjsp™åµé¢ä¸ŠåŠ ä¸?lt;%@page contentType="text/html;charset=GBK"%>

    ä¹Ÿä¸æ˜¯å¾ˆæ–¹ä¾¿åQŒè€Œä¸”在tomcat也没有æˆåŠŸï¼Œ¾l§ç®‹(hu¨¤)éƒé—·åQ?br />
    3.我现在ä‹É用方法,推èåQï¼

    写一个myActionServletæ¥åƈ覆盖ActionServlet中的processåQˆï¼‰(j¨ª)æ–ÒŽ(gu¨©)³•ã€?br />
     (t¨©ng) protected void process(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { (t¨©ng) (t¨©ng) (t¨©ng) /**@todo Override this org.apache.struts.action.ActionServlet method*/ (t¨©ng) (t¨©ng) (t¨©ng) request.setCharacterEncoding("GB2312");//ž®±åŠ ç€ä¸€è¡Œä¸€åˆ‡éƒ½è§£å†³äº?ji¨£n) (t¨©ng) (t¨©ng)?super.process(request, response); (t¨©ng) }

    当然别忘?sh¨´)º†(ji¨£n)改一下web.xml里é¢çš„é…¾|®Â?<servlet> (t¨©ng) (t¨©ng) (t¨©ng) <servlet-name>action</servlet-name> (t¨©ng) (t¨©ng) (t¨©ng) <servlet-class>strutsdemo.myActionServlet</servlet-class> (t¨©ng) (t¨©ng) (t¨©ng) <init-param> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <param-name>debug</param-name> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <param-value>2</param-value> (t¨©ng) (t¨©ng) (t¨©ng) </init-param> (t¨©ng) (t¨©ng) (t¨©ng) <init-param> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <param-name>config</param-name> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <param-value>/WEB-INF/struts-config.xml</param-value> (t¨©ng) (t¨©ng) (t¨©ng) </init-param> (t¨©ng) (t¨©ng) (t¨©ng) <load-on-startup>2</load-on-startup> (t¨©ng) </servlet>

    改一下servlet-class标签中的内容ž®±å¯ä»¥ï¼

    真的å¯ä»¥åQŒä¸€åŠ³ç”¨yiåQ?br />
    具体¾~–ç çš„ç†è®ºå°±ä¸è¯´äº?ji¨£n),google上已¾l够多了(ji¨£n)ã€?br />
    å¦å¤–åQŒå¦‚æžœä¸ç”¨strutsçš„è¯åQŒhibernate也å¯èƒ½ç¢°åˆîC¸­æ–‡äØ•ç é—®é¢˜ï¼Œåªè¦åœ¨hibernate.cfg.xmlé…置中如下:(x¨¬)

    <property name="hibernate.connection.url"> (t¨©ng) (t¨©ng) (t¨©ng)jdbc:microsoft:sqlserver://Localhost:1433;SelectMethod=cursor;characterEncoding=GBK;DatabaseName=myDatabase. (t¨©ng) (t¨©ng)</property>

    characterEncoding=GBKåQå°±å¯ä»¥äº?ji¨£n)ã€?br />


    ********************************************************************************************************************

    Java/J2EE中文问题¾lˆæžè§£å†³ä¹‹é“

    Java中文问题?sh¨´)¸€ç›´å›°æ‰°ç€å¾ˆå¤šåˆå­¦è€…,如果äº?ji¨£n)解了(ji¨£n)Java¾pÈ»Ÿçš„中文问题原ç†ï¼Œæˆ‘们ž®±å¯ä»¥å¯¹ä¸­æ–‡é—®é¢˜èƒ½å¤Ÿé‡‡å–æ ÒŽ(gu¨©)œ¬çš„解决之é“ã€?

      最å¤è€çš„解决æ–ÒŽ(gu¨©)¡ˆæ˜¯ä‹É用String的字节ç è½¬æ¢åQŒè¿™¿Uæ–¹æ¡ˆé—®é¢˜æ˜¯ä¸æ–¹ä¾¿ï¼Œæˆ‘们需è¦ç ´å对象å°è£…性,˜q›è¡Œå­—节ç è{æ¢ã€?/p>

      ˜q˜æœ‰ä¸€¿Uæ–¹å¼æ˜¯å¯¹J2EE容器˜q›è¡Œ¾~–ç è®„¡½®åQŒå¦‚æžœJ2EE应用¾pÈ»Ÿè„Þq¦»è¯¥å®¹å™¨ï¼Œåˆ™ä¼š(x¨¬)å‘生ä¹Þq åQŒè€Œä¸”指定容器é…ç½®ä¸ç¬¦åˆJ2EE应用和容器分¼›Èš„原则ã€?/p>

      在Java内部˜q算中,涉åŠ(qi¨¢ng)到的所有字½W¦ä¸²éƒ½ä¼š(x¨¬)被è{åŒ–äØ“(f¨´)UTF-8¾~–ç æ¥è¿›è¡Œè¿½Ž—。那么,在被Java转化之å‰åQŒå­—½W¦ä¸²æ˜¯ä»€ä¹ˆæ ·çš„å­—½W¦é›†åQ?Javaæ€ÀL˜¯æ ÒŽ(gu¨©)®æ“作¾pÈ»Ÿçš„默认编ç å­—½W¦é›†æ¥å†³å®šå­—½W¦ä¸²çš„åˆå§‹ç¼–ç ï¼Œè€Œä¸”Java¾pÈ»Ÿçš„è¾“å…¥å’Œè¾“å‡ºçš„éƒ½æ˜¯é‡‡å–æ“作系¾lŸçš„默认¾~–ç ã€?/p>

      因此åQŒå¦‚果能¾lŸä¸€Java¾pÈ»Ÿçš„输入ã€è¾“出和æ“作¾pÈ»Ÿ3者的¾~–ç å­—符集åˆåQŒå°†èƒ½å¤Ÿä½¿Java¾pÈ»Ÿæ­£ç¡®å¤„ç†å’Œæ˜¾½Cºæ±‰å­—。这是处ç†Java¾pÈ»Ÿæ±‰å­—的一个原则,但是在实际项目中åQŒèƒ½å¤Ÿæ­£¼‹®æŠ“ä½å’ŒæŽ§åˆ¶ä½Java¾pÈ»Ÿçš„输入和输出部分是比较难的。J2EE中,ç”׃ºŽæ¶‰åŠ(qi¨¢ng)到外部æµè§ˆå™¨å’Œæ•°æ®åº“½{‰ï¼Œæ‰€ä»¥ä¸­æ–‡é—®é¢˜ä(sh¨´)Ø•ç æ˜¾å¾—éžå¸¸çªå‡ºã€?/p>

      J2EE应用½E‹åºæ˜¯è¿è¡Œåœ¨J2EE容器中。在˜q™ä¸ª¾pÈ»Ÿä¸­ï¼Œè¾“入途径有很多ç§åQšä¸€¿U是通过™åµé¢è¡¨å•打包æˆè¯·æ±‚(requeståQ‰å‘å¾€æœåŠ¡å™¨çš„åQ›ç¬¬äºŒç§æ˜¯é€šè¿‡æ•°æ®åº“读入;˜q˜æœ‰½W?¿Uè¾“å…¥æ¯”è¾ƒå¤æ‚,JSP在第一‹Æ¡è¿è¡Œæ—¶æ€ÀL˜¯è¢«ç¼–译æˆServletåQŒJSP中常常包å«ä¸­æ–‡å­—½W¦ï¼Œé‚£ä¹ˆ¾~–译使用javacæ—Óž¼ŒJavaž®†æ ¹æ®é»˜è®¤çš„æ“ä½œ¾pÈ»Ÿ¾~–ç ä½œäØ“(f¨´)åˆå§‹¾~–ç ã€‚除éžç‰¹åˆ«æŒ‡å®šï¼Œå¦‚在Jbuilder/eclipse中å¯ä»¥æŒ‡å®šé»˜è®¤çš„字符集ã€?/p>

      输出途径也有几ç§åQšç¬¬ä¸€¿U是JSP™åµé¢çš„输出。由于JSP™åµé¢å·²ç»è¢«ç¼–译æˆServletåQŒé‚£ä¹ˆåœ¨è¾“出æ—Óž¼Œä¹Ÿå°†æ ÒŽ(gu¨©)®æ“作¾pÈ»Ÿçš„é»˜è®¤ç¼–ç æ¥é€‰æ‹©è¾“出¾~–ç åQŒé™¤éžæŒ‡å®šè¾“å‡ºç¼–ç æ–¹å¼ï¼›˜q˜æœ‰è¾“出途径是数æ®åº“åQŒå°†å­—符串输出到数æ®åº“ã€?/p>

      由此看æ¥åQŒä¸€ä¸ªJ2EE¾pÈ»Ÿçš„输入输出是éžå¸¸å¤æ‚åQŒè€Œä¸”是动æ€å˜åŒ–çš„åQŒè€ŒJava是跨òq›_°˜q行的,在实际编译和˜q行中,都å¯èƒ½æ¶‰å?qi¨¢ng)到ä¸åŒçš„æ“ä½œç³»¾lŸï¼Œå¦‚æžœä»È”±Java自由æ ÒŽ(gu¨©)®æ“作¾pÈ»Ÿæ¥å†³å®šè¾“入输出的¾~–ç å­—符集,˜q™å°†ä¸å¯æŽ§åˆ¶åœ°å‡ºçŽîCØ•ç ã€?/p>

      正是ç”׃ºŽJava的跨òq›_°ç‰ÒŽ(gu¨©)€§ï¼Œä½¿å¾—字符集问题必™åÈ”±å…·ä½“¾pÈ»Ÿæ¥ç»Ÿä¸€è§£å†³åQŒæ‰€ä»¥åœ¨ä¸€ä¸ªJava应用¾pÈ»Ÿä¸­ï¼Œè§£å†³ä¸­æ–‡ä¹Þq çš„æ ¹æœ¬åŠžæ³•æ˜¯æ˜Žç¡®æŒ‡å®šæ•´ä¸ªåº”ç”¨¾pÈ»Ÿ¾lŸä¸€å­—符集ã€?/strong>

      指定¾lŸä¸€å­—符集时åQŒåˆ°åº•是指定ISO8859_1 ã€GBK˜q˜æ˜¯UTF-8呢?

      åQ?åQ‰å¦‚¾lŸä¸€æŒ‡å®šä¸ºISO8859_1åQŒå› ä¸ºç›®å‰å¤§å¤šæ•°è½¯äšg都是西方人编制的åQŒä»–们默认的字符集就是ISO8859_1åQŒåŒ…括æ“作系¾lŸLinux和数æ®åº“MySQL½{‰ã€‚è¿™æ øP¼Œå¦‚果指定Jive¾lŸä¸€¾~–ç ä¸ºISO8859_1åQŒé‚£ä¹ˆå°±æœ‰ä¸‹é?个环节必™åÀLŠŠæ¡ï¼š(x¨¬)

      开å‘å’Œ¾~–è¯‘ä»£ç æ—¶æŒ‡å®šå­—½W¦é›†ä¸ºISO8859_1ã€?/p>

      ˜q行æ“作¾pÈ»Ÿçš„默认编ç å¿…™åÀL˜¯ISO8859_1åQŒå¦‚Linuxã€?/p>

      在JSP头部声明åQ?lt;%@ page contentType="text/html;charset=ISO8859_1" %>ã€?/p>

      åQ?åQ‰å¦‚果统一指定为GBK中文字符集,上述3ä¸ªçŽ¯èŠ‚åŒæ ·éœ€è¦åšåˆŽÍ¼Œä¸åŒçš„æ˜¯åªèƒ½˜q行在默认编ç äØ“(f¨´)GBKçš„æ“作系¾lŸï¼Œå¦‚中文Windowsã€?/p>

      ¾lŸä¸€¾~–ç ä¸ºISO8859_1å’ŒGBK虽然带楾~–制代ç çš„æ–¹ä¾¿ï¼Œä½†æ˜¯å„自åªèƒ½åœ¨ç›¸åº”çš„æ“作¾pÈ»Ÿä¸Šè¿è¡Œã€‚但是也破åäº?ji¨£n)Javaè·¨åã^å°è¿è¡Œçš„优越性,åªåœ¨ä¸€å®šèŒƒå›´å†…行得通。例如,ä¸ÞZº†(ji¨£n)使得GBK¾~–ç åœ¨linux上è¿è¡Œï¼Œè®„¡½®Linux¾~–ç ä¸ºGBKã€?/p>

      那么有没有一¿U除äº?ji¨£n)应用系¾lŸä»¥å¤–ä¸éœ€è¦è¿›è¡Œä“Q何附加设¾|®çš„中文¾~–ç æ ÒŽ(gu¨©)œ¬è§£å†³æ–ÒŽ(gu¨©)¡ˆå‘¢ï¼Ÿ

      ž®†Java/J2EE¾pÈ»Ÿçš„统一¾~–ç å®šä¹‰ä¸ºUTF-8。UTF-8¾~–ç æ˜¯ä¸€¿Uå…¼å®ÒŽ(gu¨©)‰€æœ‰è¯­­a€çš„ç¼–ç æ–¹å¼ï¼ŒæƒŸä¸€æ¯”较éºÈƒ¦(ch¨³)çš„å°±æ˜¯è¦æ‰‘Öˆ°åº”用¾pÈ»Ÿçš„æ‰€æœ‰å‡ºå…¥å£åQŒç„¶åŽä‹É用UTF-8厠Z€œç»“扎â€å®ƒã€?/p>

      一个J2EE应用¾pÈ»Ÿéœ€è¦åšä¸‹åˆ—几步工作åQ?/p>

    1. å¼€å‘å’Œ¾~–è¯‘ä»£ç æ—¶æŒ‡å®šå­—½W¦é›†ä¸ºUTF-8。JBuilderå’ŒEclipse都å¯ä»¥åœ¨™å¹ç›®å±žæ€§ä¸­è®„¡½®ã€?
    2. 使用˜q‡æ×o(h¨´)器,如果所有请求都¾l过一个Servlet控制分é…器,那么使用Servletçš„filter执行语å¥åQŒå°†æ‰€æœ‰æ¥è‡ªæµè§ˆå™¨çš„请求(requeståQ‰è{æ¢äØ“(f¨´)UTF-8åQŒå› ä¸ºæµè§ˆå™¨å‘过æ¥çš„è¯äh±‚åŒ…æ ¹æ®æµè§ˆå™¨æ‰€åœ¨çš„æ“ä½œ¾pÈ»Ÿ¾~–ç åQŒå¯èƒ½æ˜¯å„ç§å½¢å¼¾~–ç ã€‚关键一å¥ï¼š(x¨¬)
      request.setCharacterEncoding("UTF-8")ã€?br />¾|‘上有此filterçš„æºç ï¼ŒJdon框架æºç ä¸­com.jdon.util.SetCharacterEncodingFilter
      需è¦é…¾|®web.xml ‹È€‹z»è¯¥Filterã€?
    3. 在JSP头部声明åQ?lt;%@ page contentType="text/html;charset= UTF-8" %>ã€?
    4. 在Jspçš„html代ç ä¸­ï¼Œå£°æ˜ŽUTF-8:
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    5. è®‘Ö®šæ•°æ®åº“è¿žæŽ¥æ–¹å¼æ˜¯UTF-8。例如连接MYSQLæ—‰™…¾|®URL如下åQ?br />jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
      一般数æ®åº“都å¯ä»¥é€šè¿‡½Ž¡ç†è®„¡½®è®‘Ö®šUTF-8
    6. 其他和外界交互时能够讑֮š¾~–ç æ—¶å°±è®‘Ö®šUTF-8åQŒä¾‹å¦‚è¯»å–æ–‡ä»Óž¼Œæ“作XML½{‰ã€?
           

      以上讨论äº?ji¨£n)Java/J2EE的中文问题。如果整个应用系¾lŸæ˜¯ä»Žå¼€å§‹è¿›è¡Œå¼€å‘,那么¾lŸä¸€æŒ‡å®š¾~–ç ä¸ºUTF-8ž®±éžå¸¸å®¹æ˜“åšåˆ°ã€‚如果是在英文æºä»£ç åŸºç¡€ä¸ŠäºŒ‹Æ¡å¼€å‘,那么首先è¦å°†åŽŸæ¥çš„æºä»£ç è½¬æ¢ä¸ºç»Ÿä¸€¾~–ç UTF-8åQŒé‚£ä¹ˆè¿™¿Uè{æ¢å·¥ä½œä¼š(x¨¬)带æ¥ä¸€å®šçš„éºÈƒ¦(ch¨³)ã€?/p>  

      有了(ji¨£n)˜q™ä¸ªè§£å†³æ–ÒŽ(gu¨©)¡ˆåQŒæ— è®ÞZ‹É用什么框架Struts 或JSF或未æ¥å‡ºçŽ°çš„Java技术,¾lŸä¸€æˆUTF-8的方案都ä¸ä¼š(x¨¬)出现ä¹Þq åQŒç¬”者以å‰åœ¨Jsp/Servletæ—¶å°±åŸÞZºŽ˜q™ä¸ªåŽŸåˆ™åQŒåŽæ¥ä‹É用Struts½{‰æ¡†æžÓž¼Œä»Žæœªè¢«äØ•ç å›°æ‰°è¿‡åQŒå¸Œæœ›æœ¬æ–ÒŽ(gu¨©)¡ˆå…¬å¸ƒå‡ºæ¥ä¾›æ›´å¤šåˆå­¦è€…分享,å‡å°‘Java/J2EE的第一个拦路虎åQŒä¹Ÿé¿å…采å–一些äÍ(f¨´)æ—¶è§£å†Ïx(ch¨®ng)–¹æ¡ˆã€?br />

    ***********************************************************************************************************************
     (t¨©ng) <filter>  (t¨©ng)
     (t¨©ng) <filter-name>encodingFilter</filter-name>  (t¨©ng)
     (t¨©ng) <filter-class>  (t¨©ng)
     (t¨©ng) org.springframework.web.filter.CharacterEncodingFilter  (t¨©ng)
     (t¨©ng) </filter-class>  (t¨©ng)
     (t¨©ng) <init-param>  (t¨©ng)
     (t¨©ng) <param-name>encoding</param-name>  (t¨©ng)
     (t¨©ng) <param-value>UTF-8</param-value>  (t¨©ng)
     (t¨©ng) </init-param>  (t¨©ng)
     (t¨©ng) <init-param>  (t¨©ng)
     (t¨©ng) <param-name>forceEncoding</param-name>  (t¨©ng)
     (t¨©ng) <param-value>true</param-value>  (t¨©ng)
     (t¨©ng) </init-param>  (t¨©ng)
     (t¨©ng) </filter>  (t¨©ng)
     (t¨©ng)  (t¨©ng)
     (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng)  (t¨©ng) <filter-mapping>  (t¨©ng)
     (t¨©ng) <filter-name>encodingFilter</filter-name>  (t¨©ng)
     (t¨©ng) <servlet-name>action</servlet-name>  (t¨©ng)
     (t¨©ng) </filter-mapping>


    ***********************************************************************************************

    hibernate+mysql写入数æ®åº“的中文æ˜?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">ä¹Þq åQŒæ€Žä¹ˆè§£å†³åQŸï¼Ÿ


    hibernate.hbm.xml加上属�
    <property name=\"connection.useUnicode\">true</property>
    <property name=\"connection.characterEncoding\">UTF-8</property>

    mysql 的驱动用3.0.15以上版本�

    加个Filter, 使用UTF-8字符集就å¯ä»¥äº?


     (t¨©ng)


    1.使ApplicationResources.properties支æŒä¸­æ–‡
    建立一个ApplicationResources_ISO.propertiesæ–‡äšgåQŒæŠŠåº”用½E‹åºç”¨çš„message都写˜q›åŽ»åQŒç„¶åŽåœ¨dos下执行这个命令,
    native2ascii (t¨©ng)-encoding (t¨©ng)gb2312 (t¨©ng)ApplicationResources_ISO.properties (t¨©ng)ApplicationResources.properties
    ˜q™æ ·ž®×ƒ¼š(x¨¬)ž®†ISO¾~–ç çš„ApplicationResourcesè½¬æ¢æˆGB2312¾~–ç çš„æ ¼å¼äº†(ji¨£n)åQŒåŒæ—¶ä¿å­˜åˆ°ApplicationResources.properties.
    native2ascii˜q™ä¸ªå·¥å…·æ˜¯jdk自带的一个东东,所以如果path都设定正¼‹®å°±å¯ä»¥ç›´æŽ¥˜q行äº?ji¨£n),你å¯ä»¥åœ?java_home$/bin下找åˆîC»–ã€?br />转æ¢åŽçš„中文¾cÖM¼¼äºŽè¿™ä¸ªæ ·å­?br />iso (t¨©ng)æ ¼å¼ä¸‹Â?t¨©ng)ï¼?x¨¬)tj.type=商å“车类åž?br />gb2312æ ¼å¼ä¸‹Â?t¨©ng)ï¼?x¨¬)tj.type=\u5546\u54c1\u8f66\u7c7b\u578b
    ç„¶åŽåœ¨struts-config.xml中设¾|®åº”ç”¨è¿™ä¸ªèµ„æºæ–‡ä»?br /> (t¨©ng)<message-resources (t¨©ng)parameter=\"com.huahang.tj.ApplicationResources\" (t¨©ng)key=\"org.apache.struts.action.MESSAGE\" (t¨©ng)/>
    å¼€å‘jsp时在jsp的开头写ä¸?lt;%@ (t¨©ng)page (t¨©ng)contentType=\"text/html; (t¨©ng)charset=gb2312\" (t¨©ng)%>åQŒå°†å­—符集设¾|®æˆgb2312ž®±å¯ä»¥äº†(ji¨£n)ã€?br />
    2.使数æ®åº“æ“作支æŒä¸­æ–‡ã€?br />æ•°æ®åº“æ“作支æŒä¸­æ–‡ä¸€ç›´è®©æˆ‘æ¯”è¾ƒå¤´ç—›ï¼Œä½†æ˜¯æ„Ÿè°¢å–„è§£äºø™¡£å‘我推èäº?ji¨£n)www.chinaxp.orgåQŒè¿™ä¸ªç½‘站是用struts框架开å‘çš„åQŒè€Œä¸”
    开放æºç ï¼Œä¸‹è²äº?ji¨£n)æºç åŽå‘现它的中文处ç†å¾—很好,阅读部分æºç åQŒæ²¡æœ‰å‘çŽîC»€ä¹ˆç‰¹ŒDŠçš„字符集è{æ¢ï¼Œå¾ˆçº³é—øP¼Œå¶ç„¶çœ‹åˆ°æ¥ég¸Š¾|‘å‹
    留言知é“原æ¥servletå¯ä»¥¾lŸä¸€è®„¡½®å­—符转æ¢ã€‚chinaxp.orgž®±æ˜¯˜q™ä¹ˆåšçš„ã€?br />在web.xml中加ä¸?br /> (t¨©ng) (t¨©ng)<filter>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<filter-name>Set (t¨©ng)Character (t¨©ng)Encoding</filter-name>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<init-param>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<param-name>encoding</param-name>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<param-value>GB2312</param-value>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</init-param>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<init-param>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<param-name>ignore</param-name>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<param-value>true</param-value>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</init-param>
     (t¨©ng) (t¨©ng)</filter>
     (t¨©ng) (t¨©ng)<filter-mapping>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<filter-name>Set (t¨©ng)Character (t¨©ng)Encoding</filter-name>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<servlet-name>action</servlet-name>
     (t¨©ng) (t¨©ng)</filter-mapping>
    ˜q™é‡Œä¼?x¨¬)涉åŠ(qi¨¢ng)一个bean,æºç å¦‚下åQ?br />/*
     (t¨©ng)* (t¨©ng)XP (t¨©ng)Forum
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
     (t¨©ng)* (t¨©ng)Copyright (t¨©ng)(c) (t¨©ng)2002-2003 (t¨©ng)RedSoft (t¨©ng)Group. (t¨©ng) (t¨©ng)All (t¨©ng)rights (t¨©ng)reserved.
     (t¨©ng)*
     (t¨©ng)*/
    package (t¨©ng)com.huahang.tj.struts.filters;

    import (t¨©ng)javax.servlet.*;
    import (t¨©ng)java.io.IOException;

    /**
     (t¨©ng)* (t¨©ng)<p>Filter (t¨©ng)that (t¨©ng)sets (t¨©ng)the (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)be (t¨©ng)used (t¨©ng)in (t¨©ng)parsing (t¨©ng)the
     (t¨©ng)* (t¨©ng)incoming (t¨©ng)request, (t¨©ng)either (t¨©ng)unconditionally (t¨©ng)or (t¨©ng)only (t¨©ng)if (t¨©ng)the (t¨©ng)client (t¨©ng)did (t¨©ng)not
     (t¨©ng)* (t¨©ng)specify (t¨©ng)a (t¨©ng)character (t¨©ng)encoding. (t¨©ng) (t¨©ng)Configuration (t¨©ng)of (t¨©ng)this (t¨©ng)filter (t¨©ng)is (t¨©ng)based (t¨©ng)on
     (t¨©ng)* (t¨©ng)the (t¨©ng)following (t¨©ng)initialization (t¨©ng)parameters:</p>
     (t¨©ng)* (t¨©ng)<ul>
     (t¨©ng)* (t¨©ng)<li><strong>encoding</strong> (t¨©ng)- (t¨©ng)The (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)be (t¨©ng)configured
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)for (t¨©ng)this (t¨©ng)request, (t¨©ng)either (t¨©ng)conditionally (t¨©ng)or (t¨©ng)unconditionally (t¨©ng)based (t¨©ng)on
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)the (t¨©ng)<code>ignore</code> (t¨©ng)initialization (t¨©ng)parameter. (t¨©ng) (t¨©ng)This (t¨©ng)parameter
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)is (t¨©ng)required, (t¨©ng)so (t¨©ng)there (t¨©ng)is (t¨©ng)no (t¨©ng)default.</li>
     (t¨©ng)* (t¨©ng)<li><strong>ignore</strong> (t¨©ng)- (t¨©ng)I(y¨ªng)f (t¨©ng)set (t¨©ng)to (t¨©ng)\"true\", (t¨©ng)any (t¨©ng)character (t¨©ng)encoding
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)specified (t¨©ng)by (t¨©ng)the (t¨©ng)client (t¨©ng)is (t¨©ng)ignored, (t¨©ng)and (t¨©ng)the (t¨©ng)value (t¨©ng)returned (t¨©ng)by (t¨©ng)the
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<code>selectEncoding()</code> (t¨©ng)method (t¨©ng)is (t¨©ng)set. (t¨©ng) (t¨©ng)I(y¨ªng)f (t¨©ng)set (t¨©ng)to (t¨©ng)\"false,
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<code>selectEncoding()</code> (t¨©ng)is (t¨©ng)called (t¨©ng)<strong>only</strong> (t¨©ng)if (t¨©ng)the
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)client (t¨©ng)has (t¨©ng)not (t¨©ng)already (t¨©ng)specified (t¨©ng)an (t¨©ng)encoding. (t¨©ng) (t¨©ng)By (t¨©ng)default, (t¨©ng)this
     (t¨©ng)* (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)parameter (t¨©ng)is (t¨©ng)set (t¨©ng)to (t¨©ng)\"true\".</li>
     (t¨©ng)* (t¨©ng)</ul>
     (t¨©ng)*
     (t¨©ng)* (t¨©ng)<p>Although (t¨©ng)this (t¨©ng)filter (t¨©ng)can (t¨©ng)be (t¨©ng)used (t¨©ng)unchanged, (t¨©ng)it (t¨©ng)is (t¨©ng)also (t¨©ng)easy (t¨©ng)to
     (t¨©ng)* (t¨©ng)subclass (t¨©ng)it (t¨©ng)and (t¨©ng)make (t¨©ng)the (t¨©ng)<code>selectEncoding()</code> (t¨©ng)method (t¨©ng)more
     (t¨©ng)* (t¨©ng)intelligent (t¨©ng)about (t¨©ng)what (t¨©ng)encoding (t¨©ng)to (t¨©ng)choose, (t¨©ng)based (t¨©ng)on (t¨©ng)characteristics (t¨©ng)of
     (t¨©ng)* (t¨©ng)the (t¨©ng)incoming (t¨©ng)request (t¨©ng)(such (t¨©ng)as (t¨©ng)the (t¨©ng)values (t¨©ng)of (t¨©ng)the (t¨©ng)<code>Accept-Language</code>
     (t¨©ng)* (t¨©ng)and (t¨©ng)<code>User-Agent</code> (t¨©ng)headers, (t¨©ng)or (t¨©ng)a (t¨©ng)value (t¨©ng)stashed (t¨©ng)in (t¨©ng)the (t¨©ng)current
     (t¨©ng)* (t¨©ng)user\'s (t¨©ng)session.</p>
     (t¨©ng)*
     (t¨©ng)* (t¨©ng)@author (t¨©ng)<a (t¨©ng)href=\"mailto:jwtronics@yahoo.com\">John (t¨©ng)Wong</a>
     (t¨©ng)*
     (t¨©ng)* (t¨©ng)@version (t¨©ng)$Id: (t¨©ng)SetCharacterEncodingFilter.java,v (t¨©ng)1.1 (t¨©ng)2002/04/10 (t¨©ng)13:59:27 (t¨©ng)johnwong (t¨©ng)Exp (t¨©ng)$
     (t¨©ng)*/
    public (t¨©ng)class (t¨©ng)SetCharacterEncodingFilter (t¨©ng)implements (t¨©ng)Filter (t¨©ng){

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// (t¨©ng)----------------------------------------------------- (t¨©ng)I(y¨ªng)nstance (t¨©ng)Variables


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)The (t¨©ng)default (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)set (t¨©ng)for (t¨©ng)requests (t¨©ng)that (t¨©ng)pass (t¨©ng)through
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)this (t¨©ng)filter.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)String (t¨©ng)encoding (t¨©ng)= (t¨©ng)null;


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)The (t¨©ng)filter (t¨©ng)configuration (t¨©ng)object (t¨©ng)we (t¨©ng)are (t¨©ng)associated (t¨©ng)with. (t¨©ng) (t¨©ng)I(y¨ªng)f (t¨©ng)this (t¨©ng)value
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)is (t¨©ng)null, (t¨©ng)this (t¨©ng)filter (t¨©ng)instance (t¨©ng)is (t¨©ng)not (t¨©ng)currently (t¨©ng)configured.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)FilterConfig (t¨©ng)filterConfig (t¨©ng)= (t¨©ng)null;


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)Should (t¨©ng)a (t¨©ng)character (t¨©ng)encoding (t¨©ng)specified (t¨©ng)by (t¨©ng)the (t¨©ng)client (t¨©ng)be (t¨©ng)ignored?
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)boolean (t¨©ng)ignore (t¨©ng)= (t¨©ng)true;


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// (t¨©ng)--------------------------------------------------------- (t¨©ng)Public (t¨©ng)Methods


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)Take (t¨©ng)this (t¨©ng)filter (t¨©ng)out (t¨©ng)of (t¨©ng)service.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)public (t¨©ng)void (t¨©ng)destroy() (t¨©ng){

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.encoding (t¨©ng)= (t¨©ng)null;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.filterConfig (t¨©ng)= (t¨©ng)null;

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)Select (t¨©ng)and (t¨©ng)set (t¨©ng)(if (t¨©ng)specified) (t¨©ng)the (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)be (t¨©ng)used (t¨©ng)to
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)interpret (t¨©ng)request (t¨©ng)parameters (t¨©ng)for (t¨©ng)this (t¨©ng)request.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@param (t¨©ng)request (t¨©ng)The (t¨©ng)servlet (t¨©ng)request (t¨©ng)we (t¨©ng)are (t¨©ng)processing
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@param (t¨©ng)result (t¨©ng)The (t¨©ng)servlet (t¨©ng)response (t¨©ng)we (t¨©ng)are (t¨©ng)creating
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@param (t¨©ng)chain (t¨©ng)The (t¨©ng)filter (t¨©ng)chain (t¨©ng)we (t¨©ng)are (t¨©ng)processing
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@exception (t¨©ng)I(y¨ªng)OException (t¨©ng)if (t¨©ng)an (t¨©ng)input/output (t¨©ng)error (t¨©ng)occurs
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@exception (t¨©ng)ServletException (t¨©ng)if (t¨©ng)a (t¨©ng)servlet (t¨©ng)error (t¨©ng)occurs
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)public (t¨©ng)void (t¨©ng)doFilter(ServletRequest (t¨©ng)request, (t¨©ng)ServletResponse (t¨©ng)response,
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)FilterChain (t¨©ng)chain)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)throws (t¨©ng)I(y¨ªng)OException, (t¨©ng)ServletException (t¨©ng){

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// (t¨©ng)Conditionally (t¨©ng)select (t¨©ng)and (t¨©ng)set (t¨©ng)the (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)be (t¨©ng)used
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)if (t¨©ng)(ignore (t¨©ng)|| (t¨©ng)(request.getCharacterEncoding() (t¨©ng)== (t¨©ng)null)) (t¨©ng){
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)String (t¨©ng)encoding (t¨©ng)= (t¨©ng)selectEncoding(request);
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)if (t¨©ng)(encoding (t¨©ng)!= (t¨©ng)null)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)request.setCharacterEncoding(encoding);
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// (t¨©ng)Pass (t¨©ng)control (t¨©ng)on (t¨©ng)to (t¨©ng)the (t¨©ng)next (t¨©ng)filter
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)chain.doFilter(request, (t¨©ng)response);

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)Place (t¨©ng)this (t¨©ng)filter (t¨©ng)into (t¨©ng)service.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@param (t¨©ng)filterConfig (t¨©ng)The (t¨©ng)filter (t¨©ng)configuration (t¨©ng)object
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)public (t¨©ng)void (t¨©ng)init(FilterConfig (t¨©ng)filterConfig) (t¨©ng)throws (t¨©ng)ServletException (t¨©ng){

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.filterConfig (t¨©ng)= (t¨©ng)filterConfig;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.encoding (t¨©ng)= (t¨©ng)filterConfig.getInitParameter(\"encoding\");
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)String (t¨©ng)value (t¨©ng)= (t¨©ng)filterConfig.getInitParameter(\"ignore\");
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)if (t¨©ng)(value (t¨©ng)== (t¨©ng)null)
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.ignore (t¨©ng)= (t¨©ng)true;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)else (t¨©ng)if (t¨©ng)(value.equalsIgnoreCase(\"true\"))
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.ignore (t¨©ng)= (t¨©ng)true;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)else (t¨©ng)if (t¨©ng)(value.equalsIgnoreCase(\"yes\"))
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.ignore (t¨©ng)= (t¨©ng)true;
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)else
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)this.ignore (t¨©ng)= (t¨©ng)false;

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)// (t¨©ng)------------------------------------------------------ (t¨©ng)Protected (t¨©ng)Methods


     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)/**
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)Select (t¨©ng)an (t¨©ng)appropriate (t¨©ng)character (t¨©ng)encoding (t¨©ng)to (t¨©ng)be (t¨©ng)used, (t¨©ng)based (t¨©ng)on (t¨©ng)the
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)characteristics (t¨©ng)of (t¨©ng)the (t¨©ng)current (t¨©ng)request (t¨©ng)and/or (t¨©ng)filter (t¨©ng)initialization
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)parameters. (t¨©ng) (t¨©ng)I(y¨ªng)f (t¨©ng)no (t¨©ng)character (t¨©ng)encoding (t¨©ng)should (t¨©ng)be (t¨©ng)set, (t¨©ng)return
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)<code>null</code>.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)<p>
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)The (t¨©ng)default (t¨©ng)implementation (t¨©ng)unconditionally (t¨©ng)returns (t¨©ng)the (t¨©ng)value (t¨©ng)configured
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)by (t¨©ng)the (t¨©ng)<strong>encoding</strong> (t¨©ng)initialization (t¨©ng)parameter (t¨©ng)for (t¨©ng)this
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)filter.
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)* (t¨©ng)@param (t¨©ng)request (t¨©ng)The (t¨©ng)servlet (t¨©ng)request (t¨©ng)we (t¨©ng)are (t¨©ng)processing
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)*/
     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)String (t¨©ng)selectEncoding(ServletRequest (t¨©ng)request) (t¨©ng){

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)return (t¨©ng)(this.encoding);

     (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}

    }//EOC
    加上˜q™ä¸ªåŽï¼Œåœ¨action中就å¯ä»¥ç›´æŽ¥ä»Žform中接收gb2312¾~–ç çš„æ•°æ®äº†(ji¨£n)åQŒè¿”回时自然也是gb2312äº?ji¨£n)ã€?br />但是˜q™ä¸ªå¥½åƒéœ€è¦servlet (t¨©ng)2.2以上的容å™?br />
    ¾l¼åˆä¸Šé¢çš„æ–¹æ³•,我解决了(ji¨£n)struts中的中文问题åQŒçŽ°åœ¨è¿˜æ²¡å‘现新的问题ã€?/font>



    ]]>Struts常è§å¼‚常信æ¯å’Œè§£å†Ïx(ch¨®ng)–¹æ³?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64183.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 10:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64183.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/64183.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/64183.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/64183.html</trackback:ping><description><![CDATA[ <p>以下所说的struts-config.xmlå’ŒApplicationResources.properties½{‰æ–‡ä»¶åæ˜¯ç¼ºçœæ—¶ä½¿ç”¨çš„,如果你ä‹É用了(ji¨£n)多模å—,或指定了(ji¨£n)ä¸åŒçš„èµ„æºæ–‡ä»¶å¿UŽÍ¼Œ˜q™äº›åå­—è¦åšç›¸åº”的修æ”V€?/p> <p> <strong>1ã€â€œNo bean found under attribute key XXXâ€?br /></strong>在struts-config.xml里定义了(ji¨£n)一个ActionFormåQŒä½†type属性指定的¾cÖM¸å­˜åœ¨åQŒtype属性的值应该是Form¾cÈš„å…¨å。或者是åQŒåœ¨Action的定义中åQŒname或attribute属性指定的ActionFormä¸å­˜åœ¨ã€?br /></p> <p> <strong>2ã€â€œCannot find bean (t¨©ng)XXX in any scopeâ€?/strong> <br />在Action里一般会(x¨¬)request.setAttribute()一些对象,然åŽåœ¨è{å‘çš„jspæ–‡äšg里(用tag或request.getAttribute()æ–ÒŽ(gu¨©)³•åQ‰å¾—åˆ°è¿™äº›å¯¹è±¡åÆˆæ˜„¡¤ºå‡ºæ¥ã€‚这个异常是说jspè¦å¾—åˆîC¸€ä¸ªå¯¹è±¡ï¼Œä½†å‰é¢çš„Actioné‡ŒåÆˆæ²¡æœ‰ž®†å¯¹è±¡è®¾¾|®åˆ°requeståQˆä¹Ÿå¯ä»¥æ˜¯sessionã€servletContextåQ‰é‡Œã€?br />å¯èƒ½æ˜¯åå­—é”™äº?ji¨£n),è¯äh£€æŸ¥jsp里的tag的一般是name属性,或getAttribute()æ–ÒŽ(gu¨©)³•çš„å‚æ•°å€û|¼›æˆ–者是Action逻辑有问题没有执行setAttribute()æ–ÒŽ(gu¨©)³•ž®±å…ˆè½¬å‘äº?ji¨£n)ã€?br />˜q˜æœ‰å¦å¤–一个å¯èƒ½ï¼Œ¾U¯çÑa(b¨³)是jspæ–‡äšg的问题,例如<logic:iterate>ä¼?x¨¬)指定一个idå€û|¼Œç„¶åŽåœ¨åó@环里<bean:write>使用˜q™ä¸ªå€ég½œä¸ºnameçš„å€û|¼Œå¦‚æžœ˜q™ä¸¤ä¸ªå€ég¸åŒï¼Œä¹Ÿä¼š(x¨¬)出现此异常。(都是一个é“ç†ï¼Œrequest里没有对应的对象。)(j¨ª)<br /></p> <p> <strong>3ã€â€œMissing message for key "XXX"â€?/strong> <br />¾~ºå°‘所需的资æºï¼Œ‹‚€(g¨¨)查ApplicationResources.propertiesæ–‡äšgé‡Œæ˜¯å¦æœ‰jspæ–‡äšg里需è¦çš„资æºåQŒä¾‹å¦‚:(x¨¬)</p> <p> (t¨©ng)</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div> <img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">bean:message (t¨©ng)key</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">msg.name.prompt</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/></span> </div> </div> <p> (t¨©ng)</p> <p>˜q™è¡Œä»£ç ä¼?x¨¬)找msg.name.prompt资æºåQŒå¦‚æžœAppliationResources.properties里没有这个资æºå°±ä¼?x¨¬)å‡ºçŽ°æœ¬å¼‚å¸¸ã€‚åœ¨ä½¿ç”¨å¤šæ¨¡å—æ—¶åQŒè¦æ³¨æ„在模å—çš„struts-config-xxx.xml里指定è¦ä½¿ç”¨çš„èµ„æºæ–‡ä»¶å¿UŽÍ¼Œå¦åˆ™å½“然什么资æºä¹Ÿæ‰¾ä¸åˆŽÍ¼Œ˜q™ä¹Ÿæ˜¯ä¸€ä¸ªå¾ˆå®ÒŽ(gu¨©)˜“犯的错误ã€?/p> <p> <strong>4ã€â€œNo getter method for property (t¨©ng)XXX of bean teacherâ€?/strong> <br />˜q™æ¡å¼‚常信æ¯è¯´å¾—很明白,jsp里è¦å–一个bean的属性出æ¥ï¼Œä½†è¿™ä¸ªbeanòq¶æ²¡æœ‰è¿™ä¸ªå±žæ€§ã€‚你应该‹‚€(g¨¨)查jsp中æŸä¸ªæ ‡½{„¡š„property属性的倹{€‚例如下é¢ä»£ç ä¸­çš„cadeåº”è¯¥æ”¹äØ“(f¨´)codeæ‰å¯¹åQ?/p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div> <img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">bean:write (t¨©ng)name</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">teacher</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> (t¨©ng)property</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">cade</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> (t¨©ng)filter</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/></span> </div> </div> <br /> <p> </p> <p> <strong>5ã€â€œCannot find ActionMappings or ActionFormBeans collectionâ€?br /></strong>待解冟ë€?/p> <p> <strong>6ã€â€œCannot retrieve mapping for action XXXâ€?br /></strong>åœ?jspçš?lt;form>标签里指定action='/XXX'åQŒä½†˜q™ä¸ªActionòq¶æœªåœ¨struts-config.xml里设¾|®è¿‡ã€?/p> <p> <strong>7ã€HTTP Status 404 - /xxx/xxx.jsp<br /></strong>Forwardçš„path属性指å‘çš„jsp™åµé¢ä¸å­˜åœ¨ï¼Œè¯äh£€æŸ¥èµ\径和模å—åQŒå¯¹äºŽåŒä¸€æ¨¡å—中的Action转å‘åQŒpath中ä¸åº”åŒ…å«æ¨¡å—ååQ›æ¨¡å—间转å‘åQŒè®°ä½ä‹É用contextRelative="true"ã€?/p> <p> <strong>8ã€æ²¡æœ‰ä“Q何异叿€¿¡æ¯ï¼Œæ˜„¡¤º½Iºç™½™åµé¢</strong> <br />å¯èƒ½æ˜¯Action里ä‹É用的forward与struts-config.xml里定义的forwardåç§°ä¸åŒ¹é…ã€?br /></p> <p> <strong>9ã€â€œThe element type "XXX" must be terminated by the matching end-tag "XXX".â€?br /></strong>˜q™ä¸ªæ˜¯struts-config.xmlæ–‡äšg的格å¼é”™è¯¯ï¼Œä»”细‹‚€(g¨¨)æŸ¥å®ƒæ˜¯å¦æ˜¯è‰¯æž„çš„xmlæ–‡äšgåQŒå…³äºŽxmlæ–‡äšg的格å¼è¿™é‡Œå°±ä¸èµ˜˜qîCº†(ji¨£n)ã€?/p> <p> <strong>10ã€â€œServlet.init() for servlet action threw exceptionâ€?/strong> <br />一般出现这¿U异常在åŽé¢ä¼?x¨¬)显½CÞZ¸€ä¸ªå…³äºŽActionServlet的异常堆栈信æ¯ï¼Œå…¶ä¸­æŒ‡å‡ºäº?ji¨£n)异常具体出现在代ç çš„哪一行。我曄¡»é‡åˆ°çš„一‹Æ¡æ½Cºå¦‚下:(x¨¬)</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div> <img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /> <span style="COLOR: #000000">java.lang.NullPointerException<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)at (t¨©ng)org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:</span> <span style="COLOR: #000000">1003</span> <span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)at (t¨©ng)org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:</span> <span style="COLOR: #000000">955</span> <span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /><img src="http://www.cnblogs.com/Images/dot.gif" onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" /></span> </div> </div> <p> <br />䏸™§£å†³é—®é¢˜ï¼Œå…ˆä¸‹è½½strutsçš„æºç åŒ…åQŒç„¶åŽåœ¨ActionServlet.java的第1003行æ’入断点,òq¶å¯¹å„å˜é‡è¿›è¡Œç›‘视。很丢ähåQŒæˆ‘竟然把struts-config.xmlæ–‡äšg弄丢äº?ji¨£n),因此出现了(ji¨£n)上é¢çš„异常åQŒåº”该是和CVSåŒæ­¥æ—¶ä¸ž®å¿ƒ(j¨©)删除的ã€?/p> <p> <strong>11ã€â€œResources not defined for Validatorâ€?/strong> <br />˜q™ä¸ªæ˜¯åˆ©ç”¨Validatoræ’äšgåšéªŒè¯æ—¶å¯èƒ½å‡ºçŽ°çš„å¼‚å¸¸ï¼Œ˜q™æ—¶ä½ è¦‹‚€(g¨¨)查validation.xmlæ–‡äšgåQŒçœ‹é‡Œé¢ä½¿ç”¨çš„èµ„æºæ˜¯å¦ç¡®å®žæœ‰å®šä¹‰åQŒformçš„å¿U°æ˜¯å¦æ­£¼‹®ï¼Œ½{‰ç­‰ã€?/p> <p>上题q™äº›æ˜¯æˆ‘在用Strutsåšé¡¹ç›®æ—¶é‡åˆ°˜q‡çš„问题åQŒå…¶ä¸­ä¸€äº›æ›¾å›°ç»•我丞®‘æ—¶é—ß_(d¨¢)¼Œå…¶å®žå¤§éƒ¨åˆ†éƒ½æ˜¯è‡ªå·×ƒ¸¾l†å¿ƒ(j¨©)造æˆçš„。希望这½‹‡æ–‡ç« èƒ½å¯¹ä½ çš„开呿œ‰æ‰€å¸®åŠ©åQŒåƈ‹Æ¢è¿Ž¾l§ç®‹(hu¨¤)补充ã€?br /><br />12.<span id="wmqeeuq" class="top_title">Struts¾~–译中出现“cannot find actionmappings or actionformbeans collectionâ€æ½Cºçš„原因åQ?br /></span></p> <ol> <li>Web.xml未åˆå§‹åŒ–问题<br />ž®‘了(ji¨£n)一ä¸?lt;load-on-startup>0</load-on-startup><br />˜q™æ ·å¼€å§‹æ˜¯æ²¡æœ‰åŠ è²˜q™ä¸ª¾c»ï¼Œž®±æ²¡æœ‰åˆå§‹åŒ–struts-config.xmlåQŒæ‰€ä»¥æ‰¾ä¸åˆ°<br />actionmappings or actionformbeans collectionã€?br /></li> <li>struts-config.xml问题<br /></li> <li>jar包ä¸å…¨æˆ–版本ä¸å¯¹<br />也有å¯èƒ½å¯ÆD‡´˜q™ä¸ªé—®é¢˜åQŒä»Žstuts例å­é‡Œé¢æ‹¯‚¿‡æ¥å°±å¥½äº†(ji¨£n)。struts1.1自带å…?0个jar包ã€?br /></li> <li>¾~–译问题<br />有å¯èƒ½Actionå’ŒFormbean没有¾~–译åQŒä¹Ÿä¼?x¨¬)有˜q™ä¸ªé—®é¢˜åQŒæ£€æŸ¥ä¸€ä¸‹æœ‰æ²¡æœ‰å¯¹åº”çš„classæ–‡äšgž®±å¥½ã€‚class路径ä¸å¯¹å¯èƒ½ä¹Ÿä¼š(x¨¬)坯D‡´˜q™ä¸ªé—®é¢˜ã€?br /></li> <li>版本问题<br />用的servlet容器和struts版本ä¸å¯¹æˆ–这两个版本å调有问题ã€?br />在以上几æ¡éƒ½ä¸èƒ½è§£å†³é—®é¢˜çš„æƒ…况下åQŒå¯èƒ½å°±æ˜¯ç‰ˆæœ¬çš„问题?sh¨´)º†(ji¨£n),æ¢ä¸ªé«˜ç‰ˆæœ¬è¯•试å?/li> </ol> <img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/64183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 18:57 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2006/08/17/64183.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">Ó¢¼ªÉ³ÏØ</a>| <a href="http://" target="_blank">ºìºÓÏØ</a>| <a href="http://" target="_blank">Á¬½­ÏØ</a>| <a href="http://" target="_blank">¸·¿µÊÐ</a>| <a href="http://" target="_blank">³¤É³ÊÐ</a>| <a href="http://" target="_blank">ƽ°²ÏØ</a>| <a href="http://" target="_blank">ÀóÆÖÏØ</a>| <a href="http://" target="_blank">ÔæÑôÊÐ</a>| <a href="http://" target="_blank">ä¬ÄÏÊÐ</a>| <a href="http://" target="_blank">òÔºÓÊÐ</a>| <a href="http://" target="_blank">¶«Ý¸ÊÐ</a>| <a href="http://" target="_blank">á¶ÑÒ</a>| <a href="http://" target="_blank">ÀÖ°²ÏØ</a>| <a href="http://" target="_blank">¸£ÈªÊÐ</a>| <a href="http://" target="_blank">Íå×ÐÇø</a>| <a href="http://" target="_blank">´ó¶É¿ÚÇø</a>| <a href="http://" target="_blank">Âí¶û¿µÏØ</a>| <a href="http://" target="_blank">ÒÁÄþÊÐ</a>| <a href="http://" target="_blank">»ñ¼ÎÏØ</a>| <a href="http://" target="_blank">»Æ´óÏÉÇø</a>| <a href="http://" target="_blank">·ïɽÊÐ</a>| <a href="http://" target="_blank">ÖÐÎ÷Çø</a>| <a href="http://" target="_blank">À­ÈøÊÐ</a>| <a href="http://" target="_blank">ÐËÄþÊÐ</a>| <a href="http://" target="_blank">¾°µÂÕòÊÐ</a>| <a href="http://" target="_blank">½¨ºþÏØ</a>| <a href="http://" target="_blank">´óÍ¬ÏØ</a>| <a href="http://" target="_blank">³Ê¹±ÏØ</a>| <a href="http://" target="_blank">ÜþÑôÊÐ</a>| <a href="http://" target="_blank">¿üÍÍÊÐ</a>| <a href="http://" target="_blank">Ô­ÑôÏØ</a>| <a href="http://" target="_blank">ãþÔ´ÏØ</a>| <a href="http://" target="_blank">ξÊÏÏØ</a>| <a href="http://" target="_blank">Û·ÉÆÏØ</a>| <a href="http://" target="_blank">°¢°Í¸ÂÆì</a>| <a href="http://" target="_blank">ÌÒÔ°ÊÐ</a>| <a href="http://" target="_blank">µÂ»ÝÊÐ</a>| <a href="http://" target="_blank">ÏÄÒØÏØ</a>| <a href="http://" target="_blank">°¢ÀÕÌ©ÊÐ</a>| <a href="http://" target="_blank">´óÇìÊÐ</a>| <a href="http://" target="_blank">¼ÃÄþÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>