﻿<?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-asdtiang-java study-随笔分类-grails study</title><link>http://www.blogjava.net/asdtiang/category/44001.html</link><description>交流学习JAVA </description><language>zh-cn</language><lastBuildDate>Wed, 12 Jan 2011 07:33:57 GMT</lastBuildDate><pubDate>Wed, 12 Jan 2011 07:33:57 GMT</pubDate><ttl>60</ttl><item><title>grails 中render xml json 使用记录</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 10 Jan 2011 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342522.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342522.html</trackback:ping><description><![CDATA[只有使用了，才知道方便和强大啊，这主要还是依赖于groovy的MarkupBuilder，详见：<a href="http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder">http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder</a><br />
只有理解了它，在grials里使用render xml才能如鱼得水啊。其实很简单<br />
<br />
def xml = <span class="code-keyword">new</span> MarkupBuilder(writer)<br />
xml.records() {<br />
&nbsp; car(name:'HSV Maloo', make:'Holden', year:2006) {<br />
&nbsp;&nbsp;&nbsp; country('Australia')<br />
&nbsp;&nbsp;&nbsp; record(type:'speed', 'Production Pickup Truck with speed of 271kph')<br />
&nbsp; }<br />
&nbsp; }<br />
对应的xml文档：<br />
&nbsp;&lt;records&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;car name='HSV Maloo' make='Holden' year='2006'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;country&gt;Australia&lt;/country&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;record type='speed'&gt;Production Pickup Truck with speed of 271kph&lt;/record&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/car&gt;<br />
&lt;/records&gt;<br />
只要分清对应关系就可以了。属性和属性值，节点，节点的值怎么画到groovy里。<br />
下面是controller里的返回xml代码：<br />
def tests=TestAjaxPage.findAll()<br />
&nbsp;&nbsp;render(contentType:"text/xml") {<br />
&nbsp;&nbsp;&nbsp;tests1 {<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(b in tests) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(title:b.title,dateCreated:b.dateCreated){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h b.content<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
<br />
对应的返回文档为：<br />
<br />
&lt;tests1&gt;<br />
&lt;test title="社区技术需求test" dateCreated="2011-01-07 15:53:32.922"&gt;<br />
&lt;h&gt;haha&lt;/h&gt;<br />
&lt;/test&gt;<br />
&lt;/tests1&gt;<br />
<br />
这其实对于b/s,再混用c/s的程序中交换数据还是很有用的，so easy<br />
<br />
<br />
render json就要麻烦点了，主要是1.1版本和1.3.6版本写法不一样：<br />
先写1.1的吧：<br />
render(contentType:"text/json") {&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;"max"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultList{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book.getAll().each{oneitem-&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:oneitem.id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:oneitem.name,&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
1.3.6的写法如下：<br />
def tests=TestAjaxPage.findAll()<br />
&nbsp;&nbsp;render(contentType:"text/json") {<br />
&nbsp;&nbsp;&nbsp;max&nbsp; (max1:"max")<br />
&nbsp;&nbsp;&nbsp;tests1= array{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tests.each {one-&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestAjaxPage(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:one.id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content:one.content,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:one.title,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateCreated:one.dateCreated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
返回数据：{"max":{"max1":"max"},"tests1":[{"id":1,"content":"qewrqwe","title":"qwereqwr","dateCreated":"2011-01-07T10:11:52Z"}]}<br />
最后var e=originalRequest.responseText.evalJSON();就是在js里调用下.evalJSON()，就可以看做对象访问数据。<br />
<br />
版本不同，我手里一致用1.1的中文文档，做的时候自己用的1.3.6，郁闷了好久，出不来。最后看1.3.6的文档才发现写法不一样呢<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/342522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-10 12:24 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails acegi 在线用户统计</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 10 Jan 2011 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342669.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342669.html</trackback:ping><description><![CDATA[主要参考文档：<a href="http://grails.1312388.n4.nabble.com/Information-about-all-logged-in-users-with-Acegi-or-SpringSecurity-in-Grails-td1372911.html">http://grails.1312388.n4.nabble.com/Information-about-all-logged-in-users-with-Acegi-or-SpringSecurity-in-Grails-td1372911.html</a><br />
<br />
根据文档，基本操作翻译如下：（注意只统计在线用户，也就是登录的用户）<br />
<br />
在SecurityConfig中设置&nbsp;useHttpSessionEventPublisher 为true,<br />
// HttpSessionEventPublisher<br />
&nbsp;useHttpSessionEventPublisher = true<br />
这样不用更改web.xml文件<br />
<br />
resources.groovy:文件增加以下bean：<br />
<span>&nbsp;&nbsp;&nbsp;beans = { </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; <strong class="highlight">sessionRegistry</strong>(org.springframework.security.concurrent.<strong class="highlight">SessionRegistryImpl</strong>) </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; sessionController(org.springframework.security.concurrent.ConcurrentSessionControllerImpl) { </span><br />
<span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;maximumSessions = -1&nbsp;//表示同一个账户可以多次登录，但只计一个在线用户</span><br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong class="highlight">sessionRegistry</strong> = ref('<strong class="highlight">sessionRegistry</strong>') </span><br />
<span>&nbsp; &nbsp; &nbsp; } </span><br />
<span>&nbsp; &nbsp;} <br />
</span><br />
BootStap对应增加以下内容：<br />
class BootStrap { <br />
<br />
<span>&nbsp; &nbsp; &nbsp; def authenticationManager </span><br />
<span>&nbsp; &nbsp; &nbsp; def sessionController </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; def init = { servletContext -&gt; </span><br />
<span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;authenticationManager.sessionController = sessionController </span><br />
<span>&nbsp; &nbsp; &nbsp; }&nbsp;</span><br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def destroy = {} </span><br />
<span>&nbsp; &nbsp;} <br />
<br />
<br />
测试<br />
<p>class OnlineController {<br />
&nbsp;def sessionRegistry<br />
&nbsp;def test={<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;render sessionRegistry.getAllPrincipals().length<br />
&nbsp;&nbsp;}</p>
<p>}<br />
主要类的文档：<br />
ConcurrentSessionControllerImpl：<br />
<a href="http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/ConcurrentSessionControllerImpl.html">http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/ConcurrentSessionControllerImpl.html<br />
</a>SessionRegistryImpl：<br />
<a href="http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/SessionRegistryImpl.html">http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/SessionRegistryImpl.html</a><br />
</p>
<br />
</span><br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/342669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-10 12:03 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails acegi ajax登录</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 07 Jan 2011 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342512.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342512.html</trackback:ping><description><![CDATA[js代码如下：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">'text</span><span style="color: #000000">/</span><span style="color: #000000">javascript'</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">///ajax登录js</span><span style="color: #008000"><br />
<img id="Codehighlighter1_68_113_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_113_Open_Text.style.display='none'; Codehighlighter1_68_113_Closed_Image.style.display='inline'; Codehighlighter1_68_113_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_68_113_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_68_113_Closed_Text.style.display='none'; Codehighlighter1_68_113_Open_Image.style.display='inline'; Codehighlighter1_68_113_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;showLogin()&nbsp;</span><span id="Codehighlighter1_68_113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_68_113_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('ajaxLogin').style.display&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'block';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_148_223_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_223_Open_Text.style.display='none'; Codehighlighter1_148_223_Closed_Image.style.display='inline'; Codehighlighter1_148_223_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_148_223_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_148_223_Closed_Text.style.display='none'; Codehighlighter1_148_223_Open_Image.style.display='inline'; Codehighlighter1_148_223_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onSuccessfulLogin(url)&nbsp;</span><span id="Codehighlighter1_148_223_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_148_223_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert(url);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.form1.action</span><span style="color: #000000">=</span><span style="color: #000000">url;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.form1.submit();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_247_903_Open_Image" onclick="this.style.display='none'; Codehighlighter1_247_903_Open_Text.style.display='none'; Codehighlighter1_247_903_Closed_Image.style.display='inline'; Codehighlighter1_247_903_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_247_903_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_247_903_Closed_Text.style.display='none'; Codehighlighter1_247_903_Open_Image.style.display='inline'; Codehighlighter1_247_903_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;authAjax()&nbsp;</span><span id="Codehighlighter1_247_903_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_247_903_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;form&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.ajaxLoginForm;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;params&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Form.serialize(form)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;'</span><span style="color: #000000">&amp;</span><span style="color: #000000">spring</span><span style="color: #000000">-</span><span style="color: #000000">security</span><span style="color: #000000">-</span><span style="color: #000000">redirect</span><span style="color: #000000">=/</span><span style="color: #000000">login</span><span style="color: #000000">/</span><span style="color: #000000">ajaxSuccess';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Form.disable(form);</span><span style="color: #008000"><br />
<img id="Codehighlighter1_432_898_Open_Image" onclick="this.style.display='none'; Codehighlighter1_432_898_Open_Text.style.display='none'; Codehighlighter1_432_898_Closed_Image.style.display='inline'; Codehighlighter1_432_898_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_432_898_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_432_898_Closed_Text.style.display='none'; Codehighlighter1_432_898_Open_Image.style.display='inline'; Codehighlighter1_432_898_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Ajax.Request(form.action,&nbsp;</span><span id="Codehighlighter1_432_898_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_432_898_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;:&nbsp;'POST',<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;postBody&nbsp;:&nbsp;params,<br />
<img id="Codehighlighter1_510_894_Open_Image" onclick="this.style.display='none'; Codehighlighter1_510_894_Open_Text.style.display='none'; Codehighlighter1_510_894_Closed_Image.style.display='inline'; Codehighlighter1_510_894_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_510_894_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_510_894_Closed_Text.style.display='none'; Codehighlighter1_510_894_Open_Image.style.display='inline'; Codehighlighter1_510_894_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess&nbsp;:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(response)&nbsp;</span><span id="Codehighlighter1_510_894_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_510_894_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;responseText&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.responseText&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;'[]';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;json&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;responseText.evalJSON();<br />
<img id="Codehighlighter1_628_688_Open_Image" onclick="this.style.display='none'; Codehighlighter1_628_688_Open_Text.style.display='none'; Codehighlighter1_628_688_Closed_Image.style.display='inline'; Codehighlighter1_628_688_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_628_688_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_628_688_Closed_Text.style.display='none'; Codehighlighter1_628_688_Open_Image.style.display='inline'; Codehighlighter1_628_688_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(json.success)&nbsp;</span><span id="Codehighlighter1_628_688_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_628_688_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert("ok");</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccessfulLogin(json.url);<br />
<img id="Codehighlighter1_711_783_Open_Image" onclick="this.style.display='none'; Codehighlighter1_711_783_Open_Text.style.display='none'; Codehighlighter1_711_783_Closed_Image.style.display='inline'; Codehighlighter1_711_783_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_711_783_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_711_783_Closed_Text.style.display='none'; Codehighlighter1_711_783_Open_Image.style.display='inline'; Codehighlighter1_711_783_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(json.error)&nbsp;</span><span id="Codehighlighter1_711_783_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_711_783_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(json.error);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.enable(document.ajaxLoginForm);<br />
<img id="Codehighlighter1_790_889_Open_Image" onclick="this.style.display='none'; Codehighlighter1_790_889_Open_Text.style.display='none'; Codehighlighter1_790_889_Closed_Image.style.display='inline'; Codehighlighter1_790_889_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_790_889_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_790_889_Closed_Text.style.display='none'; Codehighlighter1_790_889_Open_Image.style.display='inline'; Codehighlighter1_790_889_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_790_889_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_790_889_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element.update('loginMessage',&nbsp;responseText);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.enable(document.ajaxLoginForm);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
<br />
login代码示例：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_18_211_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_211_Open_Text.style.display='none'; Codehighlighter1_18_211_Closed_Image.style.display='inline'; Codehighlighter1_18_211_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_18_211_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_18_211_Closed_Text.style.display='none'; Codehighlighter1_18_211_Open_Image.style.display='inline'; Codehighlighter1_18_211_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">def&nbsp;ajaxSuccess&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_18_211_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_211_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nocache(response)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;config&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;authenticateService.securityConfig.security<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;postUrl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">${request.contextPath}${config.defaultTargetUrl}</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">{success:&nbsp;true,url:'${postUrl}'}</span><span style="color: #000000">"//这里返回的是json<br />
</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_231_716_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_716_Open_Text.style.display='none'; Codehighlighter1_231_716_Closed_Image.style.display='inline'; Codehighlighter1_231_716_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_231_716_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_231_716_Closed_Text.style.display='none'; Codehighlighter1_231_716_Open_Image.style.display='inline'; Codehighlighter1_231_716_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />def&nbsp;authfail&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_231_716_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_231_716_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;username&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session[AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;exception&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session[AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY]<br />
<img id="Codehighlighter1_444_583_Open_Image" onclick="this.style.display='none'; Codehighlighter1_444_583_Open_Text.style.display='none'; Codehighlighter1_444_583_Closed_Image.style.display='inline'; Codehighlighter1_444_583_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_444_583_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_444_583_Closed_Text.style.display='none'; Codehighlighter1_444_583_Open_Image.style.display='inline'; Codehighlighter1_444_583_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exception)&nbsp;</span><span id="Codehighlighter1_444_583_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_444_583_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_493_529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_493_529_Open_Text.style.display='none'; Codehighlighter1_493_529_Closed_Image.style.display='inline'; Codehighlighter1_493_529_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_493_529_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_493_529_Closed_Text.style.display='none'; Codehighlighter1_493_529_Open_Image.style.display='inline'; Codehighlighter1_493_529_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exception&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;DisabledException)&nbsp;</span><span id="Codehighlighter1_493_529_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_493_529_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">[$username]&nbsp;用户被禁用.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_539_579_Open_Image" onclick="this.style.display='none'; Codehighlighter1_539_579_Open_Text.style.display='none'; Codehighlighter1_539_579_Closed_Image.style.display='inline'; Codehighlighter1_539_579_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_539_579_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_539_579_Closed_Text.style.display='none'; Codehighlighter1_539_579_Open_Image.style.display='inline'; Codehighlighter1_539_579_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_539_579_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_539_579_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">[$username]&nbsp;错误的用户名或密码.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_602_636_Open_Image" onclick="this.style.display='none'; Codehighlighter1_602_636_Open_Text.style.display='none'; Codehighlighter1_602_636_Closed_Image.style.display='inline'; Codehighlighter1_602_636_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_602_636_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_602_636_Closed_Text.style.display='none'; Codehighlighter1_602_636_Open_Image.style.display='inline'; Codehighlighter1_602_636_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(isAjax())&nbsp;</span><span id="Codehighlighter1_602_636_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_602_636_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">{error:&nbsp;'${msg}'}</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_645_713_Open_Image" onclick="this.style.display='none'; Codehighlighter1_645_713_Open_Text.style.display='none'; Codehighlighter1_645_713_Closed_Image.style.display='inline'; Codehighlighter1_645_713_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_645_713_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_645_713_Closed_Text.style.display='none'; Codehighlighter1_645_713_Open_Image.style.display='inline'; Codehighlighter1_645_713_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_645_713_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_645_713_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flash.message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirect&nbsp;action:&nbsp;auth,&nbsp;params:&nbsp;params<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<br />
页面：<br />
&nbsp;
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; background: silver; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"form1"</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"form1"</span></em> <span style="color: #7f007f">target</span><span style="color: black">=</span><em><span style="color: #2a00ff">"_blank"</span></em><span style="color: teal">&gt;&lt;/</span><span style="background: silver; color: #3f7f7f">form</span><span style="color: teal">&gt;</span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">action</span><span style="color: black">=</span><em><span style="color: #2a00ff">'</span></em><span style="color: black">${request.contextPath}</span><em><span style="color: #2a00ff">/j_spring_security_check'</span></em></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">method</span><span style="color: black">=</span><em><span style="color: #2a00ff">'POST'</span></em> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">'ajaxLoginForm'</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">'ajaxLoginForm'</span></em> <span style="color: #7f007f">target</span><span style="color: black">=</span><em><span style="color: #2a00ff">"_blank"</span></em><span style="color: teal">&gt;</span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 宋体">用户名</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">input</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_username"</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_username"</span></em> <span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"text"</span></em> <span style="color: teal">/&gt;</span><span style="color: black">&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 宋体">密</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">码</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">input</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_password"</span></em> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_password"</span></em> <span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"password"</span></em> <span style="color: teal">/&gt;&lt;</span><span style="color: #3f7f7f">input</span> <span style="color: #7f007f">onclick</span><span style="color: black">=</span><span style="color: #2a00ff">'authAjax(); return false;'</span><span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"image"</span></em> <span style="color: #7f007f">src</span><span style="color: black">=</span><em><span style="color: #2a00ff">"login.jpg"</span></em> <span style="color: teal">/&gt;</span></span></p>
<p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;<br />
<br />
<br />
暂时想不起来为什么用两个form呢，最后引入js:&lt;g:javascript library="prototype" /&gt;</span></p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/342512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-07 14:47 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails searchable highlight显示查询结果</title><link>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 22 Dec 2010 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/341336.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/341336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/341336.html</trackback:ping><description><![CDATA[查不到中文的结果，所以这里记一下<br />
以前用lucene时，还比较好控制，用searchable还不太适应。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_12_335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_335_Open_Text.style.display='none'; Codehighlighter1_12_335_Closed_Image.style.display='inline'; Codehighlighter1_12_335_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_12_335_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_12_335_Closed_Text.style.display='none'; Codehighlighter1_12_335_Open_Image.style.display='inline'; Codehighlighter1_12_335_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">def&nbsp;index&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_12_335_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_12_335_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_45_78_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_78_Open_Text.style.display='none'; Codehighlighter1_45_78_Closed_Image.style.display='inline'; Codehighlighter1_45_78_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_45_78_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_78_Closed_Text.style.display='none'; Codehighlighter1_45_78_Open_Image.style.display='inline'; Codehighlighter1_45_78_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">params.q</span><span style="color: #000000">?</span><span style="color: #000000">.trim())&nbsp;</span><span id="Codehighlighter1_45_78_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_45_78_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[:]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_92_232_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_232_Open_Text.style.display='none'; Codehighlighter1_92_232_Closed_Image.style.display='inline'; Codehighlighter1_92_232_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_92_232_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_92_232_Closed_Text.style.display='none'; Codehighlighter1_92_232_Open_Image.style.display='inline'; Codehighlighter1_92_232_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_92_232_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_92_232_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params.withHighlighter</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;songHighlighter<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[searchResult:&nbsp;searchableService.search(params.q,&nbsp;params)]<br />
<img id="Codehighlighter1_277_329_Open_Image" onclick="this.style.display='none'; Codehighlighter1_277_329_Open_Text.style.display='none'; Codehighlighter1_277_329_Closed_Image.style.display='inline'; Codehighlighter1_277_329_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_277_329_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_277_329_Closed_Text.style.display='none'; Codehighlighter1_277_329_Open_Image.style.display='inline'; Codehighlighter1_277_329_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(SearchEngineQueryParseException&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_277_329_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_277_329_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[parseException:&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;This&nbsp;closure&nbsp;does&nbsp;the&nbsp;per-hit&nbsp;highlighting<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;sr&nbsp;is&nbsp;the&nbsp;actual&nbsp;Map&nbsp;returned&nbsp;by&nbsp;search,&nbsp;so&nbsp;use&nbsp;that&nbsp;for&nbsp;storage</span><span style="color: #008000"><br />
<img id="Codehighlighter1_478_686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_478_686_Open_Text.style.display='none'; Codehighlighter1_478_686_Closed_Image.style.display='inline'; Codehighlighter1_478_686_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_478_686_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_478_686_Closed_Text.style.display='none'; Codehighlighter1_478_686_Open_Image.style.display='inline'; Codehighlighter1_478_686_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;def&nbsp;songHighlighter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_478_686_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_478_686_Open_Text"><span style="color: #000000">{&nbsp;highlighter,&nbsp;index,&nbsp;sr&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;lazy-init&nbsp;the&nbsp;storage</span><span style="color: #008000"><br />
<img id="Codehighlighter1_559_592_Open_Image" onclick="this.style.display='none'; Codehighlighter1_559_592_Open_Text.style.display='none'; Codehighlighter1_559_592_Closed_Image.style.display='inline'; Codehighlighter1_559_592_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_559_592_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_559_592_Closed_Text.style.display='none'; Codehighlighter1_559_592_Open_Image.style.display='inline'; Codehighlighter1_559_592_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">sr.highlights)&nbsp;</span><span id="Codehighlighter1_559_592_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_559_592_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.highlights&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">content为domain的属性</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sr.highlights[index]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;highlighter.fragment(</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Do&nbsp;the&nbsp;search,&nbsp;passing&nbsp;he&nbsp;highlighter&nbsp;option</span></div>
<br />
页面更改：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:each&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000">&nbsp;in</span><span style="color: #0000ff">="${searchResult.results}"</span><span style="color: #ff0000">&nbsp;status</span><span style="color: #0000ff">="index"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="result"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:set&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="className"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${ClassUtils.getShortName(result.getClass())}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:set&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="link"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${createLink(controller:&nbsp;className[0].toLowerCase()&nbsp;+&nbsp;className[1..-1],&nbsp;action:&nbsp;'show',&nbsp;id:&nbsp;result.id)}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">href</span><span style="color: #0000ff">="${link}"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${result.title}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="desc"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${searchResult.highlights[index]}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="displayLink"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${link}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">g:each</span><span style="color: #0000ff">&gt;</span></div>
查询结果示例，直接输出的searchResults<br />
<br />
{total=3, hits=org.compass.core.impl.DefaultCompassDetachedHits@4eb331, max=10, scores=[0.34462962, 0.34462962, 0.19071755], results=[asdf, asdf, 中国（拼音：Zhōnggu&#243;），是中华人民共和国的简称。古代华夏族建国于黄河流域一带，以为居天下之中，故称。还有一种解释古代中国人认为天圆地方，中国位于正中，故称中国，后成为专称。清朝，作为官方正式称呼，现代主要指中华人民共和国（英译为：The People's Republic of China，简称China）。 陆地面积960万平方千米，东部和南部大陆海岸线1.8万多千米，内海和边海的水域面积约470多万平方千米。海域分布有大小岛屿7600个。首都北京。中国具有五千年的文明史，是世界四大文明古国之一。因其文化传播的广泛性、独特性和成熟性而对周边国家和民族的文化产生深远影响，同时不断吸收各个民族的文明成果，是世界上少数最早产生文明并延续至今的国家之一。 ], offset=0, highlights=[null, null, <strong>中</strong>国（拼音：Zhōnggu&#243;），是<strong>中</strong>华人民共和国的简称。古代华夏族建国于黄河流域一带，以为居天下之<strong>中</strong>，故称。还有一种解释古代<strong>中</strong>国人认为天圆地方，<strong>中</strong>国位于正<strong>中</strong>，故称<strong>中</strong>国，后成为专称。清朝，作为官方正式]} <br />
<br />
<br />
查询结果高亮显示css为b,<br />
只要在css里加上b{color : red;}，就显示为红色了。<br />
<br />
从结果可以看出，要了highlights就没有必要要results,信息重复，但each里用了，要下班了，明天研究下吧<br />
<br />
刚到公司，想起来了，当时在domain类下重写了toString()方法，不重写results里就没有那么多内容了。<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/341336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-12-22 17:46 <a href="http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails ajax分页标签实现</title><link>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 26 Nov 2010 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/339127.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/339127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/339127.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、设计目标1、采用ajax实现2、要多少条数据，取多少条，不从数据库中一次性全部取出3、实现指定页面跳转4、用户可以指定选择每页显示几条数据5、按那个字段排序6、最好不要占用session二、如何实现2、传入参数：显示页码，共有多少条数据，每页显示几条数据,返回的页面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可选按那个字段排序...&nbsp;&nbsp;<a href='http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html'>阅读全文</a><img src ="http://www.blogjava.net/asdtiang/aggbug/339127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-11-26 14:20 <a href="http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>idea 中编辑properties文件</title><link>http://www.blogjava.net/asdtiang/archive/2010/08/18/329258.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 18 Aug 2010 10:47:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/08/18/329258.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/329258.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/08/18/329258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/329258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/329258.html</trackback:ping><description><![CDATA[<img style="width: 617px; height: 449px" height="449" alt="" src="http://www.blogjava.net/images/blogjava_net/asdtiang/gggggg.jpg" width="617" border="0" /><br />
操作，setting中选择File Encoding,选择UTF-8，打上最下角的钩，就可以正常显示资源文件了。而且可以正常编辑中文
<img src ="http://www.blogjava.net/asdtiang/aggbug/329258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-08-18 18:47 <a href="http://www.blogjava.net/asdtiang/archive/2010/08/18/329258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails fckeditor上传图片显示不了的问题</title><link>http://www.blogjava.net/asdtiang/archive/2010/08/11/328519.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 11 Aug 2010 04:06:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/08/11/328519.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/328519.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/08/11/328519.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/328519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/328519.html</trackback:ping><description><![CDATA[fckeditor插件的安装就不用多说了，在使用时有时会出现上传图片显示的情况，<br />config配置如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><font color="#ff0000"><span style="COLOR: #000000">appName</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">tatu</span><span style="COLOR: #000000">'///为项目的名称</span></font><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> set per-environment serverURL stem for creating absolute links</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_94_338_Open_Image" onclick="this.style.display='none'; Codehighlighter1_94_338_Open_Text.style.display='none'; Codehighlighter1_94_338_Closed_Image.style.display='inline'; Codehighlighter1_94_338_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_94_338_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_94_338_Closed_Text.style.display='none'; Codehighlighter1_94_338_Open_Image.style.display='inline'; Codehighlighter1_94_338_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #000000">environments </span><span id="Codehighlighter1_94_338_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_94_338_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_111_170_Open_Image" onclick="this.style.display='none'; Codehighlighter1_111_170_Open_Text.style.display='none'; Codehighlighter1_111_170_Closed_Image.style.display='inline'; Codehighlighter1_111_170_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_111_170_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_170_Closed_Text.style.display='none'; Codehighlighter1_111_170_Open_Image.style.display='inline'; Codehighlighter1_111_170_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    production </span><span id="Codehighlighter1_111_170_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_111_170_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        grails.serverURL </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://www.changeme.com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_188_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_256_Open_Text.style.display='none'; Codehighlighter1_188_256_Closed_Image.style.display='inline'; Codehighlighter1_188_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_188_256_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_188_256_Closed_Text.style.display='none'; Codehighlighter1_188_256_Open_Image.style.display='inline'; Codehighlighter1_188_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    development </span><span id="Codehighlighter1_188_256_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_188_256_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        grails.serverURL </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/${appName}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_267_335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_267_335_Open_Text.style.display='none'; Codehighlighter1_267_335_Closed_Image.style.display='inline'; Codehighlighter1_267_335_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_267_335_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_267_335_Closed_Text.style.display='none'; Codehighlighter1_267_335_Open_Image.style.display='inline'; Codehighlighter1_267_335_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    test </span><span id="Codehighlighter1_267_335_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_267_335_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        grails.serverURL </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/${appName}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_10_887_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_887_Open_Text.style.display='none'; Codehighlighter1_10_887_Closed_Image.style.display='inline'; Codehighlighter1_10_887_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_10_887_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_887_Closed_Text.style.display='none'; Codehighlighter1_10_887_Open_Image.style.display='inline'; Codehighlighter1_10_887_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">fckeditor </span><span id="Codehighlighter1_10_887_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_10_887_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_22_884_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_884_Open_Text.style.display='none'; Codehighlighter1_22_884_Closed_Image.style.display='inline'; Codehighlighter1_22_884_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_22_884_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_884_Closed_Text.style.display='none'; Codehighlighter1_22_884_Open_Image.style.display='inline'; Codehighlighter1_22_884_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      upload </span><span id="Codehighlighter1_22_884_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_22_884_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        basedir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">uploads/</span><span style="COLOR: #000000">"  ///配置上传目录</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        baseurl </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${grails.serverURL}/uploads/</span><span style="COLOR: #000000">"////配置访问路径</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        overwrite </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_129_496_Open_Image" onclick="this.style.display='none'; Codehighlighter1_129_496_Open_Text.style.display='none'; Codehighlighter1_129_496_Closed_Image.style.display='inline'; Codehighlighter1_129_496_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_129_496_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_129_496_Closed_Text.style.display='none'; Codehighlighter1_129_496_Open_Image.style.display='inline'; Codehighlighter1_129_496_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        link </span><span id="Codehighlighter1_129_496_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_129_496_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          browser </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          upload </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          allowed </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> []<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          denied </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">html</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">htm</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">php</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">php2</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">php3</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">php4</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">php5</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">phtml</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">pwml</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">inc</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">asp</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">aspx</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">ascx</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">jsp</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">cfm</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">cfc</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">pl</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">bat</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">com</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">dll</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">vbs</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">js</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">reg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">cgi</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">htaccess</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">asis</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">sh</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">shtml</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">shtm</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">phtm</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_509_625_Open_Image" onclick="this.style.display='none'; Codehighlighter1_509_625_Open_Text.style.display='none'; Codehighlighter1_509_625_Closed_Image.style.display='inline'; Codehighlighter1_509_625_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_509_625_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_509_625_Closed_Text.style.display='none'; Codehighlighter1_509_625_Open_Image.style.display='inline'; Codehighlighter1_509_625_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        image </span><span id="Codehighlighter1_509_625_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_509_625_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          browser </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          upload </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          allowed </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">jpg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">gif</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">jpeg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">png</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          denied </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> []<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_638_734_Open_Image" onclick="this.style.display='none'; Codehighlighter1_638_734_Open_Text.style.display='none'; Codehighlighter1_638_734_Closed_Image.style.display='inline'; Codehighlighter1_638_734_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_638_734_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_638_734_Closed_Text.style.display='none'; Codehighlighter1_638_734_Open_Image.style.display='inline'; Codehighlighter1_638_734_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        flash </span><span id="Codehighlighter1_638_734_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_638_734_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          browser </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          upload </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          allowed </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">swf</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          denied </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> []<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_747_879_Open_Image" onclick="this.style.display='none'; Codehighlighter1_747_879_Open_Text.style.display='none'; Codehighlighter1_747_879_Closed_Image.style.display='inline'; Codehighlighter1_747_879_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_747_879_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_747_879_Closed_Text.style.display='none'; Codehighlighter1_747_879_Open_Image.style.display='inline'; Codehighlighter1_747_879_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        media </span><span id="Codehighlighter1_747_879_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_747_879_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          browser </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          upload </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          allowed </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">mpg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">mpeg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">avi</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">wmv</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">asf</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">mov</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          denied </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> []<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />      }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>有时会遇到上传了，显示不了，查看一下上传文件没有在项目文件夹下面，这里可以改源码：<br />找到FckeditorController的execute方法<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_71_564_Open_Image" onclick="this.style.display='none'; Codehighlighter1_71_564_Open_Text.style.display='none'; Codehighlighter1_71_564_Closed_Image.style.display='inline'; Codehighlighter1_71_564_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_71_564_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_71_564_Closed_Text.style.display='none'; Codehighlighter1_71_564_Open_Image.style.display='inline'; Codehighlighter1_71_564_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> execute(command, currentFolder, userSpace, uploadOnly </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_71_564_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_71_564_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def config </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> grailsApplication.config.fckeditor<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def baseDir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> config.upload.basedir </span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">: Fckeditor.DEFAULT_BASEDIR<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        baseDir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> PathUtils.checkSlashes(baseDir, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">L+ R+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        baseDir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">servletContext.getRealPath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">baseDir   //////增加这句就可以了<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def spaceDir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> PathUtils.sanitizePath(userSpace)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        spaceDir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> PathUtils.checkSlashes(spaceDir, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">L- R+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> params.Type<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def currentPath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${baseDir}${spaceDir}${type}${currentFolder}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def currentUrl<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        def realPath</span></span></div><img src ="http://www.blogjava.net/asdtiang/aggbug/328519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-08-11 12:06 <a href="http://www.blogjava.net/asdtiang/archive/2010/08/11/328519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails 实现级联下拉列表</title><link>http://www.blogjava.net/asdtiang/archive/2010/08/10/328392.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 10 Aug 2010 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/08/10/328392.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/328392.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/08/10/328392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/328392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/328392.html</trackback:ping><description><![CDATA[不多说，可以实现多级，<a href="http://xihuyu2000.javaeye.com/blog/349722">http://xihuyu2000.javaeye.com/blog/349722</a>，这个地方可以实现两级，但我这里可以实现多级，直接上代码吧。<br />
<br />
说明，手机充值有服务商，面值，和区域，现在数据库设计有点问题，不过能说明问题就行。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_18_146_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_146_Open_Text.style.display='none'; Codehighlighter1_18_146_Closed_Image.style.display='inline'; Codehighlighter1_18_146_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_18_146_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_18_146_Closed_Text.style.display='none'; Codehighlighter1_18_146_Open_Image.style.display='inline'; Codehighlighter1_18_146_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TelDeltaPro&nbsp;</span><span id="Codehighlighter1_18_146_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_146_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;id&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name//服务商<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;area//区域<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;price//面值<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;goodId<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;sum</span><span style="color: #008000">//</span><span style="color: #008000">冲值总次数</span><span style="color: #008000"><br />
<img id="Codehighlighter1_119_144_Open_Image" onclick="this.style.display='none'; Codehighlighter1_119_144_Open_Text.style.display='none'; Codehighlighter1_119_144_Closed_Image.style.display='inline'; Codehighlighter1_119_144_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_119_144_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_119_144_Closed_Text.style.display='none'; Codehighlighter1_119_144_Open_Image.style.display='inline'; Codehighlighter1_119_144_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;mapping</span><span style="color: #000000">=</span><span id="Codehighlighter1_119_144_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_119_144_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;generator:</span><span style="color: #000000">'</span><span style="color: #000000">uuid</span><span style="color: #000000">'</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
页面主要代码：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="indexText2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">服务商</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">g:select&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="proName"</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from</span><span style="color: #0000ff">="${com.likai.asdtiang.domain.platform.TelDeltaPro.list()}"</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optionKey</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;optionValue</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onchange</span><span style="color: #0000ff">="${remoteFunction(controller:'telDeltaPro',&nbsp;action:'price',&nbsp;params:'\'name=\'+this.value',&nbsp;update:[success:'price'])}"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">g:select</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="indexText2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">面值</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="price"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="indexText2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">地区</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="area"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="提交"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span></div>
<br />
主要是<font color="#ff0000">onchange</font><span style="color: #0000ff">="${remoteFunction(controller:'telDeltaPro',&nbsp;action:'price',&nbsp;params:'\'name=\'+this.value',&nbsp;update:[success:'price'])}"这个地方，remoteFunction查下文档就可以了。<br />
<br />
contorller主要代码如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">def&nbsp;price</span><span style="color: #000000">=</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info&nbsp;params.name</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.putValue&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">telName</span><span style="color: #000000">"</span><span style="color: #000000">,params.name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;select&nbsp;id=</span><span style="color: #000000">"</span><span style="color: #000000">proName</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name=</span><span style="color: #000000">"</span><span style="color: #000000">price</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onchange=</span><span style="color: #000000">"</span><span style="color: #000000">${remoteFunction(controller:</span><span style="color: #000000">'</span><span style="color: #000000">telDeltaPro</span><span style="color: #000000">'</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action:</span><span style="color: #000000">'</span><span style="color: #000000">area</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;params:</span><span style="color: #000000">'</span><span style="color: #000000">\</span><span style="color: #000000">'</span><span style="color: #000000">price</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">'</span><span style="color: #000000">+this.value</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;update:[success:</span><span style="color: #000000">'</span><span style="color: #000000">area</span><span style="color: #000000">'</span><span style="color: #000000">])}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;li</span><span style="color: #000000">=</span><span style="color: #000000">TelDeltaPro.findAllByName(session.telName)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li.each{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">str</span><span style="color: #000000">+</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;option&nbsp;value=</span><span style="color: #000000">"</span><span style="color: #000000">${it.price}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;${it.price}&lt;/option&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">str</span><span style="color: #000000">+</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;/select&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render(text:str,contentType:</span><span style="color: #000000">"</span><span style="color: #000000">text/html</span><span style="color: #000000">"</span><span style="color: #000000">,encoding:</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;area</span><span style="color: #000000">=</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info&nbsp;params.price</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;price</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;select&nbsp;&nbsp;name=</span><span style="color: #000000">"</span><span style="color: #000000">area</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;li</span><span style="color: #000000">=</span><span style="color: #000000">TelDeltaPro.findAllWhere(name:session.telName,&nbsp;price:params.price)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li.each{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">str</span><span style="color: #000000">+</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;option&nbsp;value=</span><span style="color: #000000">"</span><span style="color: #000000">${it.area}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;${it.area}&lt;/option&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">str</span><span style="color: #000000">+</span><span style="color: #000000">"""</span><span style="color: #000000">&lt;/select&gt;</span><span style="color: #000000">"""</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render(text:str,contentType:</span><span style="color: #000000">"</span><span style="color: #000000">text/html</span><span style="color: #000000">"</span><span style="color: #000000">,encoding:</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</span>代码应该很简单的，看下就懂了。 <br />
最后应该注意下：导入AJAX脚本，因为remoteFunction用到了AJAX
<pre><span class="xml-tag">&lt;g:javascript library=<span class="xml-quote">"prototype"</span> /&gt;</span></pre>
<img src ="http://www.blogjava.net/asdtiang/aggbug/328392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-08-10 11:22 <a href="http://www.blogjava.net/asdtiang/archive/2010/08/10/328392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basicProcessingFilter'解决办法</title><link>http://www.blogjava.net/asdtiang/archive/2010/07/31/327654.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sat, 31 Jul 2010 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/07/31/327654.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/327654.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/07/31/327654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/327654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/327654.html</trackback:ping><description><![CDATA[
		<p>context.ContextLoader Context initialization failed<br />org.springframework.beans.factory.BeanCreationException: Error creating bean wit<br />h name 'basicProcessingFilter': Cannot resolve reference to bean 'authentication<br />Manager' while setting bean property 'authenticationManager'; nested exception i<br />s org.springframework.beans.factory.BeanCreationException: Error creating bean w<br />ith name 'authenticationManager': Cannot resolve reference to bean 'daoAuthentic<br />ationProvider' while setting bean property 'providers' with key [0]; nested exce<br />ption is org.springframework.beans.factory.BeanCreationException: Error creating<br /> bean with name 'daoAuthenticationProvider': Cannot resolve reference to bean 'u<br />serDetailsService' while setting bean property 'userDetailsService'; nested exce<br />ption is org.springframework.beans.factory.BeanCreationException: Error creating<br /> bean with name 'userDetailsService': Cannot resolve reference to bean 'authenti<br />cateService' while setting bean property 'authenticateService'; nested exception<br /> is org.springframework.beans.factory.BeanCreationException: Error creating bean<br /> with name 'authenticateService': Initialization of bean failed; nested exceptio<br />n is org.springframework.beans.factory.BeanCreationException: Error creating bea<br />n with name 'objectDefinitionSource': Invocation of init method failed; nested e<br />xception is java.lang.IllegalArgumentException: sessionFactory is required<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:328)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.DefaultListableBeanFactory.<br />preInstantiateSingletons(DefaultListableBeanFactory.java:557)<br />        at org.springframework.context.support.AbstractApplicationContext.finish<br />BeanFactoryInitialization(AbstractApplicationContext.java:842)<br />        at org.springframework.context.support.AbstractApplicationContext.refres<br />h(AbstractApplicationContext.java:416)<br />        at org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext<br />.refresh(GrailsWebApplicationContext.java:153)<br />        at org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfigu<br />ration.getApplicationContext(DefaultRuntimeSpringConfiguration.java:154)<br />        at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.c<br />onfigure(GrailsRuntimeConfigurator.java:170)<br />        at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.c<br />onfigure(GrailsRuntimeConfigurator.java:131)<br />        at org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWeb<br />ApplicationContext(GrailsConfigUtils.java:102)<br />        at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebA<br />pplicationContext(GrailsContextLoader.java:69)<br />        at org.springframework.web.context.ContextLoader.initWebApplicationConte<br />xt(ContextLoader.java:192)<br />        at org.springframework.web.context.ContextLoaderListener.contextInitiali<br />zed(ContextLoaderListener.java:47)<br />        at org.apache.catalina.core.StandardContext.listenerStart(StandardContex<br />t.java:3934)<br />        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4<br />429)<br />        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase<br />.java:791)<br />        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:77<br />1)<br />        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)</p>
		<p>        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav<br />a:987)<br />        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j<br />ava:909)<br />        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:495<br />)<br />        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)<br />        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java<br />:314)<br />        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl<br />eSupport.java:119)<br />        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)</p>
		<p>        at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)<br />        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)</p>
		<p>        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443<br />)<br />        at org.apache.catalina.core.StandardService.start(StandardService.java:5<br />16)<br />        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710<br />)<br />        at org.apache.catalina.startup.Catalina.start(Catalina.java:583)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.<br />java:39)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces<br />sorImpl.java:25)<br />        at java.lang.reflect.Method.invoke(Method.java:597)<br />        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)<br />        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)<br />Caused by: org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'authenticationManager': Cannot resolve reference to bean 'dao<br />AuthenticationProvider' while setting bean property 'providers' with key [0]; ne<br />sted exception is org.springframework.beans.factory.BeanCreationException: Error<br /> creating bean with name 'daoAuthenticationProvider': Cannot resolve reference t<br />o bean 'userDetailsService' while setting bean property 'userDetailsService'; ne<br />sted exception is org.springframework.beans.factory.BeanCreationException: Error<br /> creating bean with name 'userDetailsService': Cannot resolve reference to bean<br />'authenticateService' while setting bean property 'authenticateService'; nested<br />exception is org.springframework.beans.factory.BeanCreationException: Error crea<br />ting bean with name 'authenticateService': Initialization of bean failed; nested<br /> exception is org.springframework.beans.factory.BeanCreationException: Error cre<br />ating bean with name 'objectDefinitionSource': Invocation of init method failed;<br /> nested exception is java.lang.IllegalArgumentException: sessionFactory is requi<br />red<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:328)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveManagedList(BeanDefinitionValueResolver.java:355)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:322)<br />        ... 45 more<br />Caused by: org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'daoAuthenticationProvider': Cannot resolve reference to bean<br />'userDetailsService' while setting bean property 'userDetailsService'; nested ex<br />ception is org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'userDetailsService': Cannot resolve reference to bean 'authen<br />ticateService' while setting bean property 'authenticateService'; nested excepti<br />on is org.springframework.beans.factory.BeanCreationException: Error creating be<br />an with name 'authenticateService': Initialization of bean failed; nested except<br />ion is org.springframework.beans.factory.BeanCreationException: Error creating b<br />ean with name 'objectDefinitionSource': Invocation of init method failed; nested<br /> exception is java.lang.IllegalArgumentException: sessionFactory is required<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:328)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:322)<br />        ... 58 more<br />Caused by: org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'userDetailsService': Cannot resolve reference to bean 'authen<br />ticateService' while setting bean property 'authenticateService'; nested excepti<br />on is org.springframework.beans.factory.BeanCreationException: Error creating be<br />an with name 'authenticateService': Initialization of bean failed; nested except<br />ion is org.springframework.beans.factory.BeanCreationException: Error creating b<br />ean with name 'objectDefinitionSource': Invocation of init method failed; nested<br /> exception is java.lang.IllegalArgumentException: sessionFactory is required<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:328)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:322)<br />        ... 69 more<br />Caused by: org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'authenticateService': Initialization of bean failed; nested e<br />xception is org.springframework.beans.factory.BeanCreationException: Error creat<br />ing bean with name 'objectDefinitionSource': Invocation of init method failed; n<br />ested exception is java.lang.IllegalArgumentException: sessionFactory is require<br />d<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.BeanDefinitionValueResolver<br />.resolveReference(BeanDefinitionValueResolver.java:322)<br />        ... 80 more<br />Caused by: org.springframework.beans.factory.BeanCreationException: Error creati<br />ng bean with name 'objectDefinitionSource': Invocation of init method failed; ne<br />sted exception is java.lang.IllegalArgumentException: sessionFactory is required</p>
		<p>        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb<br />ject(AbstractBeanFactory.java:290)<br />        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr<br />y.getSingleton(DefaultSingletonBeanRegistry.java:222)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe<br />an(AbstractBeanFactory.java:287)<br />        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean<br />(AbstractBeanFactory.java:189)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.autowireByName(AbstractAutowireCapableBeanFactory.java:1085)<br />        at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB<br />eanFactory.autowireByName(ReloadAwareAutowireCapableBeanFactory.java:175)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1035)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)<br />        ... 87 more<br />Caused by: java.lang.IllegalArgumentException: sessionFactory is required<br />        at org.springframework.util.Assert.notNull(Assert.java:112)<br />        at org.codehaus.groovy.grails.plugins.springsecurity.RequestmapFilterInv<br />ocationDefinition.afterPropertiesSet(RequestmapFilterInvocationDefinition.java:1<br />66)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)<br />        at org.springframework.beans.factory.support.AbstractAutowireCapableBean<br />Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)<br />        ... 98 more<br />2010-7-30 10:50:42 org.apache.catalina.core.StandardContext start<br /><br /><br /><br />GRAILS在发布成WAR包在ＴＯＭＣＡＴ６中运行出现这个错误，解决办法：<br />在grails&gt;下输入clean<br />再重先生成WAR，问题解决</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/327654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-07-31 17:51 <a href="http://www.blogjava.net/asdtiang/archive/2010/07/31/327654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails acegi使用----注册时发送email</title><link>http://www.blogjava.net/asdtiang/archive/2010/04/20/318883.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 20 Apr 2010 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/04/20/318883.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/318883.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/04/20/318883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/318883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/318883.html</trackback:ping><description><![CDATA[&nbsp;在这里记一下，注册时发送出email就行了，至于如果运行配置和运行acegi在官网上就能查到。 <br />
&nbsp;&nbsp;&nbsp; useMail = true<br />
&nbsp;&nbsp; &nbsp;mailHost = "smtp.sina.com"<br />
&nbsp;&nbsp; &nbsp;mailUsername = "xxxxxxx"<br />
&nbsp;&nbsp; &nbsp;mailPassword = "xxxxxxx"<br />
&nbsp;&nbsp; &nbsp;mailProtocol = "smtp"<br />
&nbsp;&nbsp; &nbsp;mailFrom = "xxxxxxx@sina.com"<br />
&nbsp;&nbsp; &nbsp;mailPort = 25<br />
&nbsp;&nbsp; &nbsp;javaMailProperties=["mail.smtp.auth":"true","mail.smtp.socketFactory.fallback":"false"]<br />
&nbsp;&nbsp; &nbsp;defaultRole="user"<br />
&nbsp;&nbsp; &nbsp;defaultTargetUrl = "/login/main.gsp"<br />
<br />
<br />
<br />
其中javaMailProperties=["mail.smtp.auth":"true","mail.smtp.socketFactory.fallback":"false"]是关键，spring的email默认不进行认证的，如果只加"mail.smtp.auth":"true",也不行，问了下网友，加上后面的属性就行了。<br />
在这里也学习到grails的service归约规则：<br />
<title>8. The Service Layer</title>
<link title="Ref" media="screen" href="../css/main.css" type="text/css" charset="utf-8" rel="stylesheet" />
<p>Grails服务的一个重要方面是，有能力利用<a href="http://www.springframework.org/" target="blank">Spring 框架</a>的依赖注入能力。
Grails支持 "依赖注入通过规约". 换句话说，你可以使用一个属性名表示的一个服务的类名，自动把他们注入到 controllers, tag
libraries,等等。
</p>
<p>作为示例，给定的服务名为<code>BookService</code>,
如果你像下面这样在controller中放置一个名为<code>bookService</code> 的属性:
</p>
<div>
<pre>class BookController {
def bookService
&#8230;
}</pre>
</div>
<p>在这种情况下，Spring 容器将自动注入一个基于它自己配置作用域的服务实体。所有的依赖注入是通过名字的; Grails
不支持类型注入。你也可以像下面这样指定类型:
</p>
<div>
<pre>class AuthorService {
BookService bookService
}</pre>
</div>
<p>不过, 存在副作用，即在开发模式下<code>BookService</code>的改变会在加载时抛出一个错误。
</p>
<h4>依赖注入与服务</h4>
<p>你可以使用相同的技术在一个服务中注入另一个服务。如果说，你的<code>AuthorService</code>需要一个
<code>BookService</code>, 可以像下面这样声明 <code>AuthorService</code>:
</p>
<div>
<pre>class AuthorService {
def bookService
}</pre>
</div>
<h4>依赖注入与Domain类</h4>
<p>你甚至可以在domain类中注入服务，这可以帮助开发出各种丰富的domain:
</p>
<div>
<pre>class Book {
&#8230;
def bookService
def buyBook() {
bookService.buyBook(this)
}
}</pre>
</div>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/318883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-04-20 18:29 <a href="http://www.blogjava.net/asdtiang/archive/2010/04/20/318883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gsp学习笔记pageinate</title><link>http://www.blogjava.net/asdtiang/archive/2010/02/27/314050.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sat, 27 Feb 2010 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/02/27/314050.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/314050.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/02/27/314050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/314050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/314050.html</trackback:ping><description><![CDATA[
		<title>Grails Reference</title>
		<link title="Ref" media="screen" href="../../css/ref.css" type="text/css" charset="utf-8" rel="stylesheet" />
		<h1>paginate</h1>
		<p class="paragraph">
		</p>
		<h2>用途</h2>
		<p class="paragraph">创建下一个/上一个 按钮和一个 breadcrumb 实现分页. 
</p>
		<p class="paragraph">
		</p>
		<h2>示例</h2>
		<p class="paragraph">domain class实例: 
</p>
		<p class="paragraph">
		</p>
		<div class="code">
				<pre>class Book {
     <span class="java-object">String</span> title
     <span class="java-object">String</span> author
}</pre>
		</div>
		<p class="paragraph">controller实例: 
</p>
		<p class="paragraph">
		</p>
		<div class="code">
				<pre>class BookController {
  def list = {
     [books: Book.list(params)]
  }
}</pre>
		</div>
		<p class="paragraph">标签页代码: 
</p>
		<p class="paragraph">
		</p>
		<div class="code">
				<pre>
						<span class="xml-tag">&lt;g:paginate controller=<span class="xml-quote">"book"</span> action=<span class="xml-quote">"list"</span> total=<span class="xml-quote">"${Book.count()}"</span> /&gt;</span>
				</pre>
		</div>
		<p class="paragraph">或 
</p>
		<p class="paragraph">
		</p>
		<div class="code">
				<pre>
						<span class="xml-tag">&lt;g:paginate next=<span class="xml-quote">"Forward"</span> prev=<span class="xml-quote">"Back"</span>
            maxsteps=<span class="xml-quote">"0"</span> controller=<span class="xml-quote">"book"</span>
            action=<span class="xml-quote">"list"</span> total=<span class="xml-quote">"${Book.count()}"</span> /&gt;</span>
				</pre>
		</div>
		<p class="paragraph">
		</p>
		<h2>描述</h2>
		<p class="paragraph">属性 
</p>
		<ul class="star">
				<li>
						<code>total</code> (必需) - 页数的总数量. 
</li>
				<li>
						<code>action</code> (可选) - 要链接的action名称,如果不指定,链接到当前action. 
</li>
				<li>
						<code>controller</code> (可选) - 
要链接的<code>controller</code>名称,如果不指定,链接到当前的<code>controller</code>. 
</li>
				<li>
						<code>id</code> (可选) - link的id 
</li>
				<li>
						<code>params</code> (可选) - 包含请求参数的 map. 
</li>
				<li>
						<code>prev</code> (可选) - 显示上一页 (根据默认值定义 "Previous" 做为默认的分页) 
</li>
				<li>
						<code>next</code> (可选) - 显示下一页 
</li>
				<li>
						<code>max</code> (可选) - 每页显示的总记录 (默认为 10条记录). 
</li>
				<li>
						<code>maxsteps</code> (可选) - 分页的数量. 
</li>
				<li>
						<code>offset</code> (可选) - 仅用于 params.offset 为空. </li>
		</ul>
<img src ="http://www.blogjava.net/asdtiang/aggbug/314050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-02-27 11:36 <a href="http://www.blogjava.net/asdtiang/archive/2010/02/27/314050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gsp学习笔记each select set</title><link>http://www.blogjava.net/asdtiang/archive/2010/02/24/313763.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 24 Feb 2010 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/02/24/313763.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/313763.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/02/24/313763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/313763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/313763.html</trackback:ping><description><![CDATA[gsp中的select标签使用：<br /><div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:select </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="category.id"</span><span style="color: rgb(255, 0, 0);"> from</span><span style="color: rgb(0, 0, 255);">="${org.asdtiang.study.grails.Category.list()}"</span><span style="color: rgb(255, 0, 0);"><br />                                              optionKey</span><span style="color: rgb(0, 0, 255);">="id"</span><span style="color: rgb(255, 0, 0);"> optionValue</span><span style="color: rgb(0, 0, 255);">="categoryName"</span><span style="color: rgb(255, 0, 0);"><br /> value</span><span style="color: rgb(0, 0, 255);">="${goodsInstance?.category?.categoryName}"</span><span style="color: rgb(255, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">/&gt;</span></div>from指定数据来源。<br />optionKey="id"表示依次用数据源中每个Category的id作为每个选项的值（即&lt;option value=""/&gt;中的value对应的值）<br />optionValue="categoryName"表示用每个Category的categoryName作为每个选项的显示结果（如：&lt;option&gt;test&lt;/option&gt; 中test对应内容）<br />value指定当前列表中与value等值的选项。<br /><br /><ul class="star"><li><code>application</code> - The <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html">javax.servlet.ServletContext</a> 
instance 
</li><li><code>applicationContext</code> The Spring <a class="api" href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationContext.html">ApplicationContext</a> 
instance 
</li><li><code>flash</code> - The <a class="controllers" href="../ref/Controllers/flash.html">flash</a> object 
</li><li><code>grailsApplication</code> - The <a class="api" href="../api/org/codehaus/groovy/grails/commons/GrailsApplication.html">GrailsApplication</a> 
instance 
</li><li><code>out</code> - The response writer for writing to the output stream 
</li><li><code>params</code> - The <a class="controllers" href="../ref/Controllers/params.html">params</a> object for retrieving request 
parameters 
</li><li><code>request</code> - The <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletRequest.html">HttpServletRequest</a> 
instance 
</li><li><code>response</code> - The <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletResponse.html">HttpServletResponse</a> 
instance 
</li><li><code>session</code> - The <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpSession.html">HttpSession</a> 
instance 
</li><li><code>webRequest</code> - The <a class="api" href="../api/org/codehaus/groovy/grails/web/servlet/mvc/GrailsWebRequest.html">GrailsWebRequest</a> 
instance </li></ul><div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);">1</span> <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">2</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">3</span> <span style="color: rgb(0, 0, 0);">    Hello ${params.name}<br /></span><span style="color: rgb(0, 128, 128);">4</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">5</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">6</span> <span style="color: rgb(0, 0, 0);"></span></div>GSP also supports logical and iterative tags out of the box. For logic there are 
<a class="tags" href="../ref/Tags/if.html">if</a>, <a class="tags" href="../ref/Tags/else.html">else</a> and <a class="tags" href="../ref/Tags/elseif.html">elseif</a> which support your typical branching 
scenarios:

<div class="code"><pre><span class="xml-tag"><div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);">1</span> <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:if </span><span style="color: rgb(255, 0, 0);">test</span><span style="color: rgb(0, 0, 255);">="${session.role == 'admin'}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">2</span> <span style="color: rgb(0, 0, 0);">   </span><span style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">&lt;%</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">--</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> show administrative functions </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">--</span><span style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">3</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:if</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">4</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:else</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">5</span> <span style="color: rgb(0, 0, 0);">   </span><span style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">&lt;%</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">--</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> show basic functions </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">--</span><span style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">6</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:else</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">7</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">8</span> <span style="color: rgb(0, 0, 0);"></span></div><br /></span><span class="xml-tag"></span></pre></div><p class="paragraph">For iteration GSP has the <a class="tags" href="../ref/Tags/each.html">each</a> and <a class="tags" href="../ref/Tags/while.html">while</a> tags:
</p><div class="code"><pre><span class="xml-tag"><div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);"> 1</span> <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:each </span><span style="color: rgb(255, 0, 0);">in</span><span style="color: rgb(0, 0, 255);">="${[1,2,3]}"</span><span style="color: rgb(255, 0, 0);"> var</span><span style="color: rgb(0, 0, 255);">="num"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 2</span> <span style="color: rgb(0, 0, 0);">   </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Number ${num}</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 3</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:each</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:each </span><span style="color: rgb(255, 0, 0);">in</span><span style="color: rgb(0, 0, 255);">="${goodsInstanceList}"</span><span style="color: rgb(255, 0, 0);"> status</span><span style="color: rgb(0, 0, 255);">="i"</span><span style="color: rgb(255, 0, 0);"> var</span><span style="color: rgb(0, 0, 255);">="goodsInstance"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><pre><span class="xml-tag"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 153, 0);">&lt;%--</span> in指定遍历的集合，status指定索引，var指定每次取出元素的名称，默认为it <span style="color: rgb(0, 153, 0);">--%&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span></span></span></pre><span style="color: rgb(0, 0, 0);">                        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tr </span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="${(i % 2) == 0 ? 'odd' : 'even'}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />                        <br />                            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;&lt;</span><span style="color: rgb(128, 0, 0);">g:link </span><span style="color: rgb(255, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">="show"</span><span style="color: rgb(255, 0, 0);"> id</span><span style="color: rgb(0, 0, 255);">="${goodsInstance.id}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">${fieldValue(bean: goodsInstance, field: "id")}</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:link</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />                        <br />                            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">${fieldValue(bean: goodsInstance, field: "title")}</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">                        </span><br /><pre><span class="xml-tag"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 153, 0);">&lt;%--</span></span></span><span class="xml-tag"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">fieldValue方法的作用是取出指定bean的指定属性，能自动执行encodeAsHtml()操作，以防止跨站脚本攻击</span></span></span><span class="xml-tag"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 153, 0);">--%&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span></span></span></pre><span style="color: rgb(0, 0, 0);">                            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;&lt;</span><span style="color: rgb(128, 0, 0);">img </span><span style="color: rgb(255, 0, 0);">alt</span><span style="color: rgb(0, 0, 255);">="不能显示"</span><span style="color: rgb(255, 0, 0);"> src</span><span style="color: rgb(0, 0, 255);">="${fieldValue(bean: goodsInstance, field: "</span><span style="color: rgb(255, 0, 0);">photoUrl")}" style</span><span style="color: rgb(0, 0, 255);">="width:300px; height:300px"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />                        <br />                            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">${goodsInstance.category?.categoryName}</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">td</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 153, 0);"></span><span style="color: rgb(0, 0, 0);"><br />                        <br />                        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">tr</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />  </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:each</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br /></span><span style="color: rgb(0, 128, 128);"> 4</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 5</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:set </span><span style="color: rgb(255, 0, 0);">var</span><span style="color: rgb(0, 0, 255);">="num"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="${1}"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 6</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">g:while </span><span style="color: rgb(255, 0, 0);">test</span><span style="color: rgb(0, 0, 255);">="${num &lt; 5 }"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 7</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Number ${num++}</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 8</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">g:while</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 9</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">10</span> <span style="color: rgb(0, 0, 0);"></span></div><br /></span></pre></div><br /><br /><img src ="http://www.blogjava.net/asdtiang/aggbug/313763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-02-24 10:37 <a href="http://www.blogjava.net/asdtiang/archive/2010/02/24/313763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>