论坛首页 Java企业应用论坛

原来是Struts2.0的一个Bug

浏览 7665 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-27  

开始使用的是Struts2.06版本。在配置Struts.xml的时候,发现了一个问题:

struts.xml代码:

xml 代码
  1. <!---->
  2.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  3. <struts>  
  4.     <include file="struts-default.xml" />  
  5.     <package name="default" extends="struts-default">  
  6.         <!---->  
  7.         <interceptors>  
  8.             <interceptor-stack name="strutsStack">  
  9.                 <interceptor-ref name="exception" />  
  10.                 <interceptor-ref name="alias" />  
  11.                 <interceptor-ref name="servlet-config" />  
  12.                 <interceptor-ref name="prepare" />  
  13.                 <interceptor-ref name="i18n" />  
  14.                 <interceptor-ref name="chain" />  
  15.                 <interceptor-ref name="debugging" />  
  16.                 <interceptor-ref name="profiling" />  
  17.                 <interceptor-ref name="scoped-model-driven" />  
  18.                 <interceptor-ref name="model-driven" />  
  19.                 <interceptor-ref name="fileUpload" />  
  20.                 <interceptor-ref name="checkbox" />  
  21.                 <interceptor-ref name="static-params" />  
  22.                 <interceptor-ref name="params" />  
  23.   
  24.                 <interceptor-ref name="validation">  
  25.                     <param name="excludeMethods">  
  26.                         input,back,cancel,browse   
  27.                     param>  
  28.                 interceptor-ref>  
  29.                 <interceptor-ref name="workflow">  
  30.                     <param name="excludeMethods">  
  31.                         input,back,cancel,browse   
  32.                     param>  
  33.                 interceptor-ref>  
  34.             interceptor-stack>  
  35.         interceptors>  
  36.         <!---->  
  37.         <default-interceptor-ref name="strutsStack" />  
  38.     package>  
  39.   
  40.     <include file="struts_xml/user.xml" />  
  41.   
  42. struts>  

这是struts.xml所包含的代码。

xml 代码
  1. <!---->
  2.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  3. <struts>  
  4.   
  5.     <package name="user" extends="default">  
  6.         <!---->  
  7.         <action name="userAction"  
  8.             class="com.leo.controller.UserController" method="userAction">  
  9.             <result name="success">a.jspresult>  
  10.             <result name="input">login.jspresult>  
  11.         action>  
  12.   
  13.         <action name="index" class="com.leo.controller.UserController"  
  14.             method="index">  
  15.             <result name="success">login.jspresult>  
  16.             <result name="input">login.jspresult>  
  17.         action>  
  18.   
  19.         <action name="login" class="com.leo.controller.UserController"  
  20.             method="login">  
  21.             <result name="success" type="redirect-action">  
  22.                 index.action   
  23.             result>  
  24.             <result name="input">login.jspresult>  
  25.         action>  
  26.   
  27.         <action name="logout" class="com.leo.controller.UserController"  
  28.             method="logout">  
  29.             <result name="success">login.jspresult>  
  30.             <result name="input">login.jspresult>  
  31.         action>  
  32.   
  33.     package>  
  34.   
  35. struts>  

这种“包”继承关系是合法的,但在struts2.06版本怎么也无法通过,控制台一直报错:Error building results for action ××× in namespace - action 。调试了很久,Webwork文档与书也翻了N遍,还是没有效果。最后实在没有办法了,换成Struts2.09包,竟然通过了。

大家可以试试,其实Struts2的包继承是非常有用的,很多全局拦截器的设置,Action的设置,以及Result-type等,都可以通过包继承来组织你的配置文件。

   发表时间:2007-10-29  
怎么才知道啊,哈哈!
0 请登录后投票
   发表时间:2007-10-31  

http://www.iteye.com/topic/89919

老问题了
0 请登录后投票
   发表时间:2007-10-31  
了解!
0 请登录后投票
   发表时间:2007-10-31  
java 代码
  1. import java.net.*;      
  2. import java.io.*;      
  3. import java.util.*;      
  4.      
  5. public class UDPServer {      
  6.   static final int INPORT = 1711;      
  7.   private byte[] buf = new byte[1000];      
  8.   private DatagramPacket dp = new DatagramPacket(buf, buf.length);      
  9.   private DatagramSocket socket;      
  10.   public UDPServer() {      
  11.     try {      
  12.       socket = new DatagramSocket(INPORT);      
  13.       System.out.println("Server started!");      
  14.       while (true) {      
  15.         socket.receive(dp);      
  16.         String rcvd = Dgram.toString(dp) + ",from ddress:" + dp.getAddress() +      
  17.             ",port:" + dp.getPort();      
  18.         System.out.println(rcvd);      
  19.         String echoString = "Echoed:" + rcvd;      
  20.         DatagramPacket echo = Dgram.toDatagram(echoString, dp.getAddress(),      
  21.                                                dp.getPort());      
  22.         socket.send(echo);      
  23.       }      
  24.     }      
  25.     catch (SocketException e) {      
  26.       System.err.println("Can't open socket");      
  27.       System.exit(1);      
  28.     }      
  29.     catch (IOException e) {      
  30.       System.err.println("Communication error!");      
  31.       e.printStackTrace();      
  32.     }      
  33.   }      
  34.      
  35.   public static void main(String[] args) {      
  36.     new UDPServer();      
  37.   }      
  38. }      
  39.      
  40. //=====================================      
  41. class UDPClient      
  42.     extends Thread {      
  43.   private DatagramSocket s;      
  44.   private InetAddress hostAddress;      
  45.   private byte[] buf = new byte[1000];      
  46.   private DatagramPacket dp = new DatagramPacket(buf, buf.length);      
  47.   private int id;      
  48.      
  49.   public UDPClient(int identifier) {      
  50.     id = identifier;      
  51.     try {      
  52.       s = new DatagramSocket();      
  53.       hostAddress = InetAddress.getByName("localhost");      
  54.     }      
  55.     catch (UnknownHostException e) {      
  56.       System.err.println("Cannot find host");      
  57.       System.exit(1);      
  58.     }      
  59.     catch (SocketException e) {      
  60.       System.err.println("Can't open Socket");      
  61.       e.printStackTrace();      
  62.       System.exit(1);      
  63.     }      
  64.   }      
  65.      
  66.   public void run() {      
  67.     try {      
  68.       for (int i = 0; i < 1; i++) { //消息数      
  69.         String outMessage = "Client #" +      
  70.             id + ",message#" + i;      
  71.         s.send(Dgram.toDatagram(outMessage, hostAddress, UDPServer.INPORT));      
  72.         s.receive(dp);      
  73.         String rcvd = "Client #" + id + ",rcvd from " +      
  74.             dp.getAddress() + "," +      
  75.             dp.getPort() + ":" +      
  76.             Dgram.toString(dp);      
  77.         System.out.println(rcvd);      
  78.       }      
  79.     }      
  80.     catch (IOException e) {      
  81.       e.printStackTrace();      
  82.       System.exit(1);      
  83.     }      
  84.   }      
  85.      
  86.   public static void main(String[] args) {      
  87.     for (int i = 0; i < 1; i++) //客户数量      
  88.       new UDPClient(i).start();      
  89.   }      
  90. }      
  91.      
  92. class Dgram {      
  93.   public static DatagramPacket toDatagram(      
  94.       String s, InetAddress destIA, int destPort) {      
  95.     byte[] buf = new byte[s.length() + 1];      
  96.     s.getBytes(0, s.length(), buf, 0);      
  97.     return new DatagramPacket(buf, buf.length, destIA, destPort);      
  98.   }      
  99.      
  100.   public static String toString(DatagramPacket p) {      
  101.     return new String(p.getData(), 0, p.getLength());      
  102.   }      
  103. }     
0 请登录后投票
   发表时间:2007-10-31  
真不知道为什么,webwork2.0变成了这样的Struts2.0,真叫晕倒!
0 请登录后投票
   发表时间:2008-10-27  
Result-type等,都可                    
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics