﻿<?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......</title><link>http://www.blogjava.net/dechon/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 17:39:01 GMT</lastBuildDate><pubDate>Tue, 21 Apr 2026 17:39:01 GMT</pubDate><ttl>60</ttl><item><title>不刷新页面,切换表格的编辑状态</title><link>http://www.blogjava.net/dechon/archive/2005/12/08/22957.html</link><dc:creator>Terence</dc:creator><author>Terence</author><pubDate>Thu, 08 Dec 2005 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/dechon/archive/2005/12/08/22957.html</guid><wfw:comment>http://www.blogjava.net/dechon/comments/22957.html</wfw:comment><comments>http://www.blogjava.net/dechon/archive/2005/12/08/22957.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/dechon/comments/commentRss/22957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dechon/services/trackbacks/22957.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前段时间做了一个简单的维护界面,包括添加,变更与删除的功能.变更界面是在页面中显示一个TABLE(第一列为RadioButton),选中一行后该行变成可编辑状态,切换到其它行后再恢复成文本显示.最初做的时候是点击单选项按钮后提交到后台刷新页面来实现的,后来要求改成在客户端切换编辑状态.<BR><BR><BR>1.首先需要解决的是由文本显示状态与TEXT框转换的问题.由文本显示到编辑框这个可以通过修改对应对象的innerHTML来解决,由编辑框切换到文本显示开始用的是outerHTML来修改的(后来发现有问题).<BR><BR><BR>2.行切换的问题:当选择的行做了变换时,如果数据做了更改且未提交的话仍显示未修改前的值.这个在页面中加入了一个隐藏域,保存选中行的数据.这部分数据只是用来临时保存数据的,不需要提交到后台,未包含在FORM中,只是给了一个ID进行区分;<BR><BR><BR>3.选中的行并不是所有字段都更改为可编辑状态,只有部分字段需要更改.这里在修改innerHTML的时候进行了判断;<BR><BR><BR>4.如何与FORM中的属性匹配的问题:可以在修改innerHTML的时候指定name就可以了;<BR><BR><BR>5.后来在接下来的测试中,如果字段中存在HTML字符,通过outerHTML来赋值,浏览器会对它进行解析,并不是想要显示的信息.开始查JS函数的时候发现了escape与 unescape,以为会进行自动转换的,后来发现并非如此.在经过几番修改之后,发现修改outerText属性则不会对赋的值进行解析.<BR><BR><BR>6.由于一些验证是定义在后台的,只有提交到服务器后才会进行校验.如果检验不通过还返回当前页面,要保留提交前的状态;这里是给RadioButton一个ID(后台数据表中的主键值).找到对应的行,再把把它置成选中状态,同时相应的列改为编辑框;<BR><BR><BR>7.应该说到这里基本已经完成了,但在提交到服务器校验出错后,返回的页面中显示的仍然是编辑前的值,由于页面做了刷新,隐藏域的值已经被重置.如果再切换到其它行,显示的仍然是用户修改后的数据,这部分数据并未成功更新到后台,应该显示成修改前的数据.这里通过Request传回到页面中,在触发对应的RadioButton后再把值赋到隐藏域中.<BR><BR>部分代码如下:<BR><BR><FONT style="BACKGROUND-COLOR: #ffffff" color=#008000>&lt;script language="JavaScript" type="text/javascript"&gt;</FONT><BR>//Get parent node.<BR><FONT color=#a52a2a>window.SearchByTagName = function(e, TAG) {<BR>&nbsp;&nbsp;&nbsp; while(e!=null &amp;&amp; e.tagName){<BR>&nbsp;&nbsp;&nbsp; &nbsp;if(e.tagName==TAG.toUpperCase()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return(e);<BR>&nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;e = e.parentNode; <BR>&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp;&nbsp; return null;<BR>}</FONT></P>
<P>var&nbsp;<FONT color=#0000ff>selectedRow</FONT> = -1; //global</P>
<P><FONT color=#0000ff>function selectChanged(e) {<BR>&nbsp;&nbsp;&nbsp; var td = SearchByTagName(e, "TD");<BR>&nbsp;&nbsp;&nbsp; var tr = td.parentNode;<BR>&nbsp;&nbsp;&nbsp; var tab = SearchByTagName(tr, "TABLE");<BR>&nbsp;&nbsp;&nbsp; var cellValue = "";<BR>&nbsp;&nbsp;&nbsp; //Reset the cell's value.<BR>&nbsp;&nbsp;&nbsp; if(selectedRow&gt;=0) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;for(var i=td.cellIndex+1; i&lt;tab.rows[selectedRow].cells.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = tab.rows[selectedRow].cells[i].getElementsByTagName("INPUT");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var k=0; k&lt;a.length; k++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[k].type=="text") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//Valid only in IE.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;a[k].outerText = document.getElementById(a[k].name).value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }&nbsp;</FONT>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<FONT color=#0000ff>&nbsp;selectedRow = tr.rowIndex;<BR>&nbsp;<BR>&nbsp;//Change the cell into text,and save the value into hidden field.<BR>&nbsp;&nbsp;&nbsp; var hyoujijunCell = document.getElementById("hyoujijun" + selectedRow);<BR>&nbsp;&nbsp;&nbsp; var ryakusyouCell = document.getElementById("ryakusyou" + selectedRow);<BR>&nbsp;&nbsp;&nbsp; var nameCell = document.getElementById("name" + selectedRow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; document.getElementById("hyoujijun").value=rtrim(hyoujijunCell.innerText);<BR>&nbsp;&nbsp;&nbsp; document.getElementById("hyoujijun" + selectedRow).innerHTML = <BR>&nbsp;&nbsp;&nbsp; &nbsp;"&lt;input type='text' name='hyoujijun' maxlength='3' style='width:80px' value='" + <BR>&nbsp;&nbsp;&nbsp; &nbsp; rtrim(hyoujijunCell.innerHTML) +"'&gt;";<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("ryakusyou").value=rtrim(ryakusyouCell.innerText);<BR>&nbsp;&nbsp;&nbsp; &nbsp;document.getElementById("ryakusyou" + selectedRow).innerHTML = <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;"&lt;input type='text' name='ryakusyou' maxlength='4' style='width:60px' value='" + <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;rtrim(ryakusyouCell.innerHTML) +"'&gt;";<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; document.getElementById("name").value= rtrim(nameCell.innerText);<BR>&nbsp;&nbsp;&nbsp; document.getElementById("name" + selectedRow).innerHTML = <BR>&nbsp;&nbsp;&nbsp; &nbsp;"&lt;input name='name' maxlength='100' style='width:300px' value='" + <BR>&nbsp;&nbsp;&nbsp; &nbsp;rtrim(nameCell.innerHTML) +"'&gt;";<BR>}</FONT></P>
<P><FONT color=#a52a2a>function validReturn() {<BR>&nbsp;if ( &lt;%=selectedMasterID%&gt; &gt; 0) {<BR>&nbsp;&nbsp;//Get the selected row,and select it.<BR>&nbsp;&nbsp;var radioSn = document.getElementById("masterid&lt;%=selectedMasterID%&gt;");<BR>&nbsp;&nbsp;radioSn.click( );<BR>&nbsp;&nbsp;//Save original value.If changed other row,restore data as before modified.<BR>&nbsp;&nbsp;document.getElementById("hyoujijun").value = "&lt;%=hyoujijunReturn%&gt;";<BR>&nbsp;&nbsp;document.getElementById("name").value = "&lt;%=nameReturn%&gt;";<BR>&nbsp;&nbsp;document.getElementById("ryakusyou").value = "&lt;%=ryakusyouReturn%&gt;";<BR>&nbsp;}<BR>}</FONT></P>
<P><FONT color=#0000ff>//Clear the last blank.<BR>function rtrim(cellValue) {<BR>&nbsp;if (cellValue.lastIndexOf(" ") &gt;= 0) {<BR>&nbsp;&nbsp;cellValue = cellValue.substr(0,cellValue.lastIndexOf(" "));<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;return cellValue;&nbsp;<BR>}<BR></FONT><FONT color=#006400>&lt;/script&gt;</FONT><BR><BR><BR>&lt;body class="gyomu" onload="validReturn()"&gt;<BR>&lt;table&gt;<BR>&nbsp;&nbsp;&lt;logic:present name="masterList"&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;logic:iterate id="element" indexId="index" name="masterList"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="meisai" style="width: 50px"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logic:notEqual name="element" property="sakujyo" value="DELETE"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#006400>&lt;input type="radio" name="masterid"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value="&lt;bean:write name='element' property='masterid'/&gt;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onclick="selectChanged(this)" id="masterid&lt;bean:write name='element' property='masterid'/&gt;" /&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%rowCount++;%&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:notEqual&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#006400>&nbsp;&lt;td class="meisai" style="width: 80px" id="hyoujijun&lt;%=index%&gt;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="element" property="hyoujijun" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#800080>&lt;td class="meisai" style="width: 60px" id="cd&lt;%=index%&gt;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="element" property="cd" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#ff0000>&lt;td class="meisai" style="width: 300px" id="name&lt;%=index%&gt;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="element" property="name" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#000080>&lt;logic:equal name="needShortName" value="true"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="meisai" style="width: 60px" id="ryakusyou&lt;%=index%&gt;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="element" property="ryakusyou" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logic:equal&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#0000ff>&lt;td class="meisai" style="width: 70px" id="sakujyo&lt;%=index%&gt;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean:write name="element" property="sakujyo" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;/logic:iterate&gt;<BR>&nbsp;&nbsp;&lt;/logic:present&gt;<BR>&nbsp;&lt;/table&gt;<BR>&lt;/body&gt;<BR></P><img src ="http://www.blogjava.net/dechon/aggbug/22957.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-12-08 11:46 <a href="http://www.blogjava.net/dechon/archive/2005/12/08/22957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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>终于贴出了第一篇文章</title><link>http://www.blogjava.net/dechon/archive/2005/11/24/21234.html</link><dc:creator>Terence</dc:creator><author>Terence</author><pubDate>Thu, 24 Nov 2005 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/dechon/archive/2005/11/24/21234.html</guid><wfw:comment>http://www.blogjava.net/dechon/comments/21234.html</wfw:comment><comments>http://www.blogjava.net/dechon/archive/2005/11/24/21234.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dechon/comments/commentRss/21234.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dechon/services/trackbacks/21234.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说是贴的第一篇,其实并不完全准确,文章前几天就贴上了,但开始的时候放在了"文章"栏目下面而不是随笔下面,首页中显示不出来,反复修改"选项"的设置也没有搞定.在BLOGJAVA上面也没有找到相关的使用说明,郁闷了好一段时间.有点想到其它地方申请个BLOG的想法了.早上的时候看别人的BLOG,发现都是随笔,猜测可能是只有随笔才会在自己BLOG的首页中显示出来.于是把必到"文章"栏目中的一篇文章搬到了随笔下,果然显示在首页了!<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果有遇到同样问题的朋友,请把文章转贴到"随笔"栏目中就可以了!<img src ="http://www.blogjava.net/dechon/aggbug/21234.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:29 <a href="http://www.blogjava.net/dechon/archive/2005/11/24/21234.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>