﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-KE-文章分类-问题区</title><link>http://www.blogjava.net/keweibo/category/26393.html</link><description>As long as you are there to lead me ,I won't lose my way </description><language>zh-cn</language><lastBuildDate>Fri, 18 Jan 2008 03:32:38 GMT</lastBuildDate><pubDate>Fri, 18 Jan 2008 03:32:38 GMT</pubDate><ttl>60</ttl><item><title>&amp;lt;s:actionmessage/&amp;gt;标签显示Action信息</title><link>http://www.blogjava.net/keweibo/articles/176142.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Fri, 18 Jan 2008 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/176142.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/176142.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/176142.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/176142.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/176142.html</trackback:ping><description><![CDATA[使用&lt;s:actionmessage/&gt;标签显示Action信息时,有一个要注意的地方,<br />
就是相应Action的配置<br />
&lt;!-- 修改帐号密码 --&gt;<br />
&nbsp;&nbsp;&lt;action name="updatePassword" class="userAction" method="updatePassword"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;result name="input"&gt;/account/updatePassword.jsp&lt;/result&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;result name="success" <span style="color: #ff0000">type="redirect" <span style="color: #000000">&gt;/</span></span>account/updatePassword.jsp&lt;/result&gt;<br />
&nbsp;&nbsp;&lt;/action&gt;<br />
<strong><em style="color: #ff0000">注意:</em></strong><br />
如果将result标签的type属性设置为redirect则在Action即使使用了<br />
<br />
<span style="color: #3366ff"><strong>addActionMessage(getText("updatePassword.success")); <br />
<br />
<span style="color: #000000">在JSP页面也不能显示相应的信息</span></strong></span>
 <img src ="http://www.blogjava.net/keweibo/aggbug/176142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2008-01-18 11:23 <a href="http://www.blogjava.net/keweibo/articles/176142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork/struts2中格式化输出数字和日期的方法</title><link>http://www.blogjava.net/keweibo/articles/174997.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sun, 13 Jan 2008 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/174997.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/174997.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/174997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/174997.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/174997.html</trackback:ping><description><![CDATA[<span style="color: red">转:&nbsp; http://www.blogjava.net/aoxj/archive/2006/08/14/63461.html</span><br />
前言：大概在去年6月的时候，我们团队开始使用webwork来替代struts，刚开始大家都没有经验，为了格式化输出时间和数字，想出了很多现在看来笨笨的傻傻的方法。后来俺找到了这个方法，试验了一下之后发了下面这个email给了team member, 今天一位同事问起这个问题，俺从数以千计的已发送邮件中找到了这个东西，想想决定整理出来。给大家分享一下，顺便给我自己做个备份，呵呵，后者基本上是俺写blog的一个重要用途。<br />
<br />
&nbsp;&nbsp;&nbsp; 分享一个在WebWork中如何格式化显示数字和日期的方法：
<p><br />
具体的做法这里有详细的说明：<br />
<a href="http://wiki.opensymphony.com/display/WW1/How+to+format+dates+and+numbers?showComments=true">http://wiki.opensymphony.com/display/WW1/How+to+format+dates+and+numbers?showComments=true</a></p>
<p><br />
&nbsp;&nbsp; 下面是项目中推荐使用的时间格式:<br />
#format<br />
global.format.date={0,date,yyyy-MM-dd}<br />
global.format.time={0,date,HH:mm:ss}<br />
global.format.datetime={0,date,yyyy-MM-dd HH:mm:ss}</p>
<p>注意的是如果使用Carlender来保存时间,因为上面要求传入的是Data对象，因此需要使用Carlender.getTime()方法<br />
从Carlender中获取Date:</p>
<p>&lt;ww:text name="'global.format.date'"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;ww:param value="'birthday.time()'"/&gt;<br />
&lt;/ww:text&gt;</p>
<p>这里使用的是&lt;ww:param/&gt;标签来传递参数，虽然也可以使用 &lt;ww:text name="'format.date'" value0= "'birthday.time()'"/&gt;<br />
但是后面的这个方法在webwork的新版本中已经被要求不要使用，大家还是尽量使用 &lt;ww:param/&gt;标签</p>
<p>禁用value0属性的说明：<br />
大家可以找到text标签的源代码,在com.opensymphony.webwork.views.jsp.ui.TextTag中：<br />
public void setValue0(String aName) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOG.warn("The value attributes of TextTag are deprecated.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value1Attr = aName;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p><br />
对于数字的格式化，这里有两个参考：<br />
global.format.percent = {0,number,##0.00'%'}<br />
global.format.money = {0,number,$##0.00}</p>
<p>考虑目前在项目中使用最多的是显示附件大小,定义以下格式:<br />
global.format.size.k={0,number,##0.00'K'}<br />
global.format.size.m={0,number,##0.00'M'}<br />
global.format.size.g={0,number,##0.00'G'}</p>
<p>如action有方法<br />
public long getFilesize();&nbsp; 返回的大小是以byte为单位，在显示时通常是以k或M显示<br />
则显示时:<br />
&lt;ww:text name="'global.format.size.k'"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;ww:param value="filesize/1024"/&gt;<br />
&lt;/ww:text&gt;<br />
&lt;ww:text name="'global.format.size.m'"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;ww:param value="filesize/1048576"/&gt;<br />
&lt;/ww:text&gt;<br />
&lt;ww:text name="'global.format.size.g'"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;ww:param value="filesize/1073741824"/&gt;<br />
&lt;/ww:text&gt;</p>
<p>比较遗憾的是似乎没有办法在资源文件中进行这个/1024的运算，试过{0/1024,number,##0.00'K'} 无法解析。只好在jsp里面用 value="filesize/1024"来计算实际值。不知道这里有没有别的更好的实现方式？<br />
<br />
恩，顺便再介绍一下当时俺们team想出来的笨笨的方法，不要见笑啊，以上面的显示文件大小为例，想到的方法大致有以下几种：<br />
1. 直接输出字符串的结果<br />
&nbsp;&nbsp;&nbsp;getFileSizeString(), 在里面用java代码判断大小并生成诸如"1.2k", "31.2M"的结果返回<br />
2. 提供多个函数<br />
&nbsp; getFileSizeByte(), getFileSizeK(), getFileSizeM(), getFileSizeG()<br />
3.使用javascript在client端格式化<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type = "text/javascript"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var resultNum = &lt;ww:property value="fileSize" /&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultNum = format(resultNum);//类似的函数&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(resultNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />
4.使用自定义标签</p>
--------------------------------------------------------------------------------------------------------------<br />
<strong>struts2中格式化输出数字和日期的方法<br />
<br />
<u>资源文件<br />
</u></strong>......<br />
#格式化数字或时间输出<br />
global.format.date={0,date,yyyy-MM-dd}<br />
global.format.money={0,number,￥##0.00 '元'}<br />
......<br />
<strong><u>JSP文件</u></strong><br />
格式化时间:&nbsp; &lt;s:text name="global.format.date"&gt;&lt;s:param value="publishTime"&gt;&lt;/s:param&gt;&lt;/s:text&gt;<br />
格式化数字:&nbsp;&nbsp;&lt;s:text name="global.format.money"&gt;&lt;s:param value="price"/&gt;&lt;/s:text&gt;<br />
<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/174997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2008-01-13 17:46 <a href="http://www.blogjava.net/keweibo/articles/174997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate的DetachedCriteria查询(多对多查询问题)</title><link>http://www.blogjava.net/keweibo/articles/174759.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sat, 12 Jan 2008 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/174759.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/174759.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/174759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/174759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/174759.html</trackback:ping><description><![CDATA[<span style="color: red">hibernate的DetachedCriteria查询(多对多查询问题)</span><br />
hibernate的DetachedCriteria查询 <br />
图书和作者之间是多对多关系.现在知道作者.要查该作者所写的图书,条件应该怎样写啊 <br />
我这样写是错误的 <br />
detachedCriteria.add(Restrictions.eq("authors", authorSet));请问这句应该怎样写才对 <br />
authorSet是一个Set类型的变量<br />
<br />
解决办法<br />
detachedCriteria.createAlias("authors", "auths").add( Restrictions.in("auths.name", authorSet));<br />
<br />
不过出又出现了新的问题<br />
查得的结果以数组的方式返回,数组包含了Book和Author两个对象了，能不能设置一下,让它只返回Book对象就好了<img src="/CuteSoft_Client/CuteEditor/images/emsmileo.gif" align="absMiddle" border="0"  alt="" /><br />
<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/174759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2008-01-12 10:11 <a href="http://www.blogjava.net/keweibo/articles/174759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2表单(method=get)乱码问题</title><link>http://www.blogjava.net/keweibo/articles/162369.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Thu, 22 Nov 2007 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/162369.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/162369.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/162369.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/162369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/162369.html</trackback:ping><description><![CDATA[<p>今天在做图书查询时,想让查询的条件通过GET的方式提交到相应的action里.</p>
<p>问题是中文数据提交到action里都成了乱码.</p>
<p>用post提交时,并不会出现上面提到的乱码问题.</p>
<p>请问该怎样解决提交用GET提交的乱码问题?</p>
<p><br />
struts.xml已经设置了<br />
<span style="color: red;">&lt;constant name="struts.i18n.encoding" value="GBK" /&gt;</span><br />
JSP页面也设置了<br />
<span style="color: red;">&lt;%@ page language="java" contentType="text/html; charset=GBK"%&gt;<br />
<span style="color: rgb(0, 0, 0);">&lt;s:form action="search.action" <span style="color: rgb(255, 0, 0);">method="get"&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="hidden" name="order" value="hit"&gt;<br />
&nbsp;&nbsp; &lt;table&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td&gt;&lt;s:textfield label="书名" name="bookName"/&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td&gt;&lt;s:textfield label="作者" name="authorName"/&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td&gt;&lt;s:textfield label="出版社" name="publishName"/&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;s:select label="折扣" list="#{0:'请选择折扣',1:'30折以上',2:'30折到50折',3:'50折到70折',4:'70折以下'}"<br />
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; listKey="key" listValue="value"&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/s:select&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;td align="center"&gt;&lt;input type="submit" value="确定"&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;input type="reset" value="重新填写"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &lt;/table&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/s:form&gt;<br />
在SearchAction里输出查询条件.比如说图书名称.在控制台都成了乱码</span></span></p>
<img src ="http://www.blogjava.net/keweibo/aggbug/162369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2007-11-22 14:14 <a href="http://www.blogjava.net/keweibo/articles/162369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts + spring + hibernate整合事务配置的问题(请教高手)</title><link>http://www.blogjava.net/keweibo/articles/150830.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sun, 07 Oct 2007 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/150830.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/150830.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/150830.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/150830.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/150830.html</trackback:ping><description><![CDATA[<p>一个关于struts + spring + hibernate整合事务配置的问题(请教高手)<br />
... ...<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beans<br />
&nbsp;xmlns="http://www.springframework.org/schema/beans"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"&gt;</p>
<p>&nbsp;&lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />
&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;<br />
&nbsp;&lt;bean id="txProxyTemplate" abstract="true"<br />
&nbsp;&nbsp;&nbsp; class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;<br />
&nbsp;&nbsp;&lt;property name="transactionManager" ref="transactionManager"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&lt;property name="transactionAttributes"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="create*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="delete*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="find*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;<br />
&nbsp;&lt;bean id="userDAO" class="dgut.ke.dao.impl.UserDAO"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&lt;bean id="userService"&nbsp; parent="txProxyTemplate"&nbsp;&nbsp;class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO" /&gt;<br />
&lt;/bean&gt;<br />
... ....<br />
启动Tomecat时出了错.之前没有添加事务处理时.上面的代码是可以正常运行的.添加事务之后却出现以下错误<br />
<span style="color: red">ERROR - Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener<br />
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in ServletContext resource [/WEB-INF/applicationContext-hibernate.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [dgut.ke.service.impl.UserService]: Bean property 'transactionManager' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?<br />
Caused by: <br />
org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [dgut.ke.service.impl.UserService]: Bean property 'transactionManager' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?<br />
</span>解决办法<br />
把<br />
&lt;bean id="userService"&nbsp; parent="txProxyTemplate"&nbsp;&nbsp;class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO" /&gt;<br />
&lt;/bean&gt;<br />
换成以下代码就可以正常运行了<br />
<span style="color: red">&nbsp;&lt;bean id="userService" parent="txProxyTemplate"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="target"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean class="dgut.ke.service.impl.UserService"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="userDAO" ref="userDAO"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;</span></p>
请教一下为什么会出现这种情况?<br />
哪位高手解释下,谢谢!!! 
<img src ="http://www.blogjava.net/keweibo/aggbug/150830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2007-10-07 13:36 <a href="http://www.blogjava.net/keweibo/articles/150830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 interceptor 问题(请教高手)</title><link>http://www.blogjava.net/keweibo/articles/150747.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sat, 06 Oct 2007 13:54:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/150747.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/150747.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/150747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/150747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/150747.html</trackback:ping><description><![CDATA[<p>今天写了一个自定义拦截器.却遇到了以下问题</p>
<p>package dgut.ke.interceptors;</p>
<p>import java.util.ArrayList;<br />
import java.util.List;</p>
<p>import javax.servlet.http.HttpServletRequest;</p>
<p>import org.apache.struts2.ServletActionContext;</p>
<p>import com.opensymphony.xwork2.Action;<br />
import com.opensymphony.xwork2.ActionContext;<br />
import com.opensymphony.xwork2.ActionInvocation;<br />
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;</p>
<p>import dgut.ke.model.Catalog;<br />
import dgut.ke.model.Publish;<br />
import dgut.ke.model.Subject;<br />
import dgut.ke.service.ICatalogService;<br />
import dgut.ke.service.IPublishService;<br />
import dgut.ke.service.ISubjectService;</p>
<p>public class AddBookInterceptor extends MethodFilterInterceptor {</p>
<p>&nbsp;/**<br />
&nbsp; * <br />
&nbsp; */<br />
&nbsp;private static final long serialVersionUID = 1135497226250835266L;</p>
<p>&nbsp;private ISubjectService subjectService ;<br />
&nbsp;private ICatalogService catalogService ;<br />
&nbsp;private IPublishService publishService ;</p>
<p>&nbsp;public ICatalogService getCatalogService() {<br />
&nbsp;&nbsp;return catalogService;<br />
&nbsp;}</p>
<p>&nbsp;public IPublishService getPublishService() {<br />
&nbsp;&nbsp;return publishService;<br />
&nbsp;}</p>
<p>&nbsp;public ISubjectService getSubjectService() {<br />
&nbsp;&nbsp;return subjectService;<br />
&nbsp;}</p>
<p>&nbsp;public void setCatalogService(ICatalogService catalogService) {<br />
&nbsp;&nbsp;this.catalogService = catalogService;<br />
&nbsp;}</p>
<p>&nbsp;public void setPublishService(IPublishService publishService) {<br />
&nbsp;&nbsp;this.publishService = publishService;<br />
&nbsp;}</p>
<p>&nbsp;public void setSubjectService(ISubjectService subjectService) {<br />
&nbsp;&nbsp;this.subjectService = subjectService;<br />
&nbsp;}</p>
<p>&nbsp;@Override<br />
&nbsp;protected String doIntercept(ActionInvocation invoation) throws Exception {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根<br />
&nbsp;&nbsp;System.out.println("-------- 拦截器开始执行 ----------");<br />
&nbsp;&nbsp;List&lt;Subject&gt; subject_list = (ArrayList&lt;Subject&gt;)subjectService.findAll();<br />
&nbsp;&nbsp;List&lt;Catalog&gt; catalog_list = (ArrayList&lt;Catalog&gt;)catalogService.findAll();<br />
&nbsp;&nbsp;List&lt;Publish&gt; pubish_list =&nbsp; (ArrayList&lt;Publish&gt;)publishService.findAll();<br />
<br />
&nbsp;&nbsp;//ActionContext act = ActionContext.getContext() ;<br />
&nbsp;&nbsp;ActionContext act = invocation.getInvocationContext() ;<br />
&nbsp;&nbsp;HttpServletRequest request = (HttpServletRequest) act.get(ServletActionContext.HTTP_REQUEST) ;<br />
&nbsp;&nbsp;request.setAttribute("subject_list", subject_list) ;<br />
&nbsp;&nbsp;request.setAttribute("catalog_list", catalog_list) ;<br />
&nbsp;&nbsp;request.setAttribute("publish_list", pubish_list) ;<br />
&nbsp;&nbsp;System.out.println("-------- 拦截器执行结束 ----------");<br />
&nbsp;&nbsp;return Action.INPUT;<br />
&nbsp;}</p>
<p>}<br />
为了实现request.setAttribute(String str, Object obj) ;.最先是让上面的类实现<a title="interface in org.apache.struts2.interceptor" href="http://struts.apache.org/2.0.9/struts2-core/apidocs/org/apache/struts2/interceptor/ServletRequestAware.html" target="classFrame"><em>ServletRequestAware</em></a> 接口.<br />
但是在运行的时候却出现了空指针异常。后来改成以上的代码就可以正常运行，但是还是<br />
不太明白<br />
曾经在一本书上看到一段话：构建interceptor最重要的原则：<span style="color: red">interceptor必须是无状态的，并且不能<br />
够使用任何ActionInvocation提供范围以外的API <br />
</span></p>
   <img src ="http://www.blogjava.net/keweibo/aggbug/150747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2007-10-06 21:54 <a href="http://www.blogjava.net/keweibo/articles/150747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>