﻿<?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-Studying Java......-随笔分类-STRUTS</title><link>http://www.blogjava.net/dechon/category/5205.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:33:46 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:33:46 GMT</pubDate><ttl>60</ttl><item><title>利用函数computeURL( )实现同一FORM的多动作提交</title><link>http://www.blogjava.net/dechon/archive/2005/11/24/21253.html</link><dc:creator>Terence</dc:creator><author>Terence</author><pubDate>Thu, 24 Nov 2005 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/dechon/archive/2005/11/24/21253.html</guid><wfw:comment>http://www.blogjava.net/dechon/comments/21253.html</wfw:comment><comments>http://www.blogjava.net/dechon/archive/2005/11/24/21253.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/dechon/comments/commentRss/21253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dechon/services/trackbacks/21253.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在实际处理的页面中,往往在一个页面中有多个触发的动作,而Struts的ActionForm中只能指定一个Action,是一种粗粒度的实现(JSF中有更好的解决方案),computeURL( )可以提供一种变通的解决方法.<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; computeURL( )是在<STRONG>org.apache.struts.util.RequestUtils(Struts Ver1.1)与org.apache.struts.taglib.TagUtils(Struts Ver1.2)</STRONG>类中的一个函数,用来解析基于Forward,Action,链接,页面参数的URL可以用来动态改变页面中Form对应的Action.Ver1.1中有以下两种:<BR>1.<A href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\My%20Documents\StrutsAPI.chm::/org/apache/struts/util/RequestUtils.html#computeURL(javax.servlet.jsp.PageContext, java.lang.String, java.lang.String, java.lang.String, java.util.Map, java.lang.String, boolean)"><STRONG><FONT face="Courier New">computeURL</FONT></STRONG></A><FONT face="Courier New">(javax.servlet.jsp.PageContext&nbsp;pageContext, java.lang.String&nbsp;forward, java.lang.String&nbsp;href, java.lang.String&nbsp;page, java.util.Map&nbsp;params, java.lang.String&nbsp;anchor, boolean&nbsp;redirect)<BR>2.<A href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\My%20Documents\StrutsAPI.chm::/org/apache/struts/util/RequestUtils.html#computeURL(javax.servlet.jsp.PageContext, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.Map, java.lang.String, boolean)"><STRONG>computeURL</STRONG></A>(javax.servlet.jsp.PageContext&nbsp;pageContext, java.lang.String&nbsp;forward, java.lang.String&nbsp;href, java.lang.String&nbsp;page, java.lang.String&nbsp;action, java.util.Map&nbsp;params, java.lang.String&nbsp;anchor, boolean&nbsp;redirect)<FONT face="Times New Roman"> </FONT><BR></FONT>其中第一个是&nbsp;&nbsp;Deprecated.第二个在新版本中得以保留,另外还提供了另外一种重载:<BR><A href="http://struts.apache.org/struts-doc-1.2.7/api/org/apache/struts/taglib/TagUtils.html#computeURL(javax.servlet.jsp.PageContext, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.Map, java.lang.String, boolean, boolean)"><FONT face="Courier New"><STRONG>computeURL</STRONG></FONT></A><FONT face="Courier New">(javax.servlet.jsp.PageContext&nbsp;pageContext, java.lang.String&nbsp;forward, java.lang.String&nbsp;href, java.lang.String&nbsp;page, java.lang.String&nbsp;action, java.lang.String&nbsp;module, java.util.Map&nbsp;params, java.lang.String&nbsp;anchor, boolean&nbsp;redirect, boolean&nbsp;encodeSeparator)</FONT>&nbsp;<BR>参数说明如下:<BR>
<DT><B>Parameters:</B> 
<DD><CODE>pageContext</CODE> - PageContext for the tag making this call 
<DD><CODE>forward</CODE> - Logical forward name for which to look up the context-relative URI (if specified) 
<DD><CODE>href</CODE> - URL to be utilized unmodified (if specified) 
<DD><CODE>page</CODE> - Module-relative page for which a URL should be created (if specified) 
<DD><CODE>action</CODE> - Logical action name for which to look up the context-relative URI (if specified) 
<DD><CODE>params</CODE> - Map of parameters to be dynamically included (if any) 
<DD><CODE>anchor</CODE> - Anchor to be dynamically included (if any) 
<DD><CODE>redirect</CODE> - Is this URL for a <CODE>response.sendRedirect(</CODE> 
<P><CODE>下面介绍一下详细的使用方法:<BR>1.在JSP页面中导入对应的包:<BR>&lt;%@ page import= "org.apache.struts.util.RequestUtils"%&gt; <BR>或<BR>&lt;%@ page import= "org.apache.struts.<FONT face="Times New Roman">taglib.TagUtils</FONT>"%&gt;<BR>2.创建一个JAVASCRIPT函数:<BR>&lt;script language="JavaScript" type="text/javascript"&gt;<BR>function search() {<BR>&nbsp;&lt;%String searchUrl = RequestUtils.computeURL(<BR>&nbsp;&nbsp;&nbsp;pageContext,<BR>&nbsp;&nbsp;&nbsp;null,<BR>&nbsp;&nbsp;&nbsp;null,<BR>&nbsp;&nbsp;&nbsp;"/Search.do",<BR>&nbsp;&nbsp;&nbsp;null,<BR>&nbsp;&nbsp;&nbsp;null,<BR>&nbsp;&nbsp;&nbsp;null,<BR>&nbsp;&nbsp;&nbsp;false);<BR>&nbsp;%&gt;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;document.form1.action = "&lt;%=searchUrl%&gt;";<BR>&nbsp;document.form1.submit();&nbsp;&nbsp;<BR>}<BR>&lt;/script&gt;<BR>3.在JSP页面中给对应的表单指定ID以便上面的函数进行确定提交的是哪个FORM(如果一个页面在存在多个FORM的话):<BR>&lt;html:form styleId="form1" action="/aotherSearch"&gt;<BR>.........<BR>&lt;/html:form&gt;<BR>4.在需要触发提交动作的地方,调用2中的JAVASCRIPT函数:<BR>&lt;html:button property="searchInfo" value="检索" onclick="search()"&nbsp;style="width:100px" /&gt;<BR><BR>对应的ACTION与FORM在配置文件中定义.这样,就可以动态更改FORM的ACTION实现一个FORM对应多个ACTION了.</CODE></P></DD><img src ="http://www.blogjava.net/dechon/aggbug/21253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dechon/" target="_blank">Terence</a> 2005-11-24 11:29 <a href="http://www.blogjava.net/dechon/archive/2005/11/24/21253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中的下拉列表标签的使用</title><link>http://www.blogjava.net/dechon/archive/2005/11/24/21230.html</link><dc:creator>Terence</dc:creator><author>Terence</author><pubDate>Thu, 24 Nov 2005 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/dechon/archive/2005/11/24/21230.html</guid><wfw:comment>http://www.blogjava.net/dechon/comments/21230.html</wfw:comment><comments>http://www.blogjava.net/dechon/archive/2005/11/24/21230.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/dechon/comments/commentRss/21230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dechon/services/trackbacks/21230.html</trackback:ping><description><![CDATA[<P>页面中经常用到下拉列表,下面是个人对于STRUTS中标签使用的一点总结:<BR>STRUTS中的下拉选择列表标签必须嵌套在&lt;html:form&gt;标签中,包括:<BR><FONT color=#008000>1.&lt;html:select&gt;<BR>2.&lt;html:option&gt;<BR>3.&lt;html:options&gt;<BR>4.&lt;html:optionsCollection&gt;<BR></FONT><BR>使用时嵌套如下:<BR><FONT color=#008000>&lt;html:select property="ationForm.property"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;html:option&gt;或&lt;html:options&gt;或&lt;html:optionsCollection&gt;<BR>&lt;/html:select&gt;<BR></FONT>其中property为ActionForm中对应的一个属性.<BR><BR><FONT color=#0000ff>1.&lt;html:option&gt;</FONT><BR><FONT color=#008000>&lt;html:option value="value"&gt;displayName&lt;/html:option&gt;<BR></FONT>其中value为实际使用的值(赋值到ActionForm对应的属性中) displayName页面中显示的信息.<BR><FONT color=#800080>例:&lt;html:option value=""&gt;&lt;/html:option&gt;显示一个空白选择,值为"".<BR></FONT><BR><FONT color=#0000ff>2..&lt;html:options&gt;</FONT><FONT color=#008000><BR>&lt;html:options collection="collection" labelProperty="displayName" property="value"/&gt;<BR></FONT>其中collection为一个集合,一般是个ArrayList,displayName为前台显示的名称,value为后台实际使用的值.<BR><FONT color=#800080>例:&lt;html:options collection="arrayList" labelProperty="name" property="id" /&gt;<BR></FONT><BR><FONT color=#0000ff>3..&lt;html:optionsCollection&gt;</FONT><FONT color=#008000><BR>&lt;html:optionsCollection property="actionForm.property" label="displayName" value="value"/&gt;<BR></FONT>其中property为ActionForm中的一个属性,为一个集合.displayName为前台显示的名称,value为后台实际使用的值.<BR><FONT color=#800080>例:&lt;html:optionsCollection property="listProperty" label="name" value="id" /&gt;<BR><BR></FONT><FONT color=#000000>补充一点:如果要从 数据库去取数据，一般是在 action 里调用 DAO ，把结果存入一个ArrayList作为 request 的一个属性传到页面上； 这时一般用 &lt;html:options .../&gt; 标签.另外，如果数据不从数据库去取，而是代码固定的，则一般把这种放到 ActionForm 里，作为属性在页面上取，这时一般用 &lt;html:optionsCollection ... /&gt; .</FONT></P><img src ="http://www.blogjava.net/dechon/aggbug/21230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dechon/" target="_blank">Terence</a> 2005-11-24 10:21 <a href="http://www.blogjava.net/dechon/archive/2005/11/24/21230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>