亚洲精品无码久久久久牙蜜区,亚洲日韩中文字幕一区,亚洲a一级免费视频http://www.tkk7.com/asdtiang/category/44001.html交流學(xué)習(xí)JAVA zh-cnWed, 12 Jan 2011 07:33:57 GMTWed, 12 Jan 2011 07:33:57 GMT60grails 中render xml json 使用記錄http://www.tkk7.com/asdtiang/archive/2011/01/10/342522.htmlasdtiangasdtiangMon, 10 Jan 2011 04:24:00 GMThttp://www.tkk7.com/asdtiang/archive/2011/01/10/342522.htmlhttp://www.tkk7.com/asdtiang/comments/342522.htmlhttp://www.tkk7.com/asdtiang/archive/2011/01/10/342522.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/342522.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/342522.htmlhttp://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder
只有理解了它,在grials里使用render xml才能如魚(yú)得水啊。其實(shí)很簡(jiǎn)單

def xml = new MarkupBuilder(writer)
xml.records() {
  car(name:'HSV Maloo', make:'Holden', year:2006) {
    country('Australia')
    record(type:'speed', 'Production Pickup Truck with speed of 271kph')
  }
  }
對(duì)應(yīng)的xml文檔:
 <records>
      <car name='HSV Maloo' make='Holden' year='2006'>
        <country>Australia</country>
        <record type='speed'>Production Pickup Truck with speed of 271kph</record>
      </car>
</records>
只要分清對(duì)應(yīng)關(guān)系就可以了。屬性和屬性值,節(jié)點(diǎn),節(jié)點(diǎn)的值怎么畫(huà)到groovy里。
下面是controller里的返回xml代碼:
def tests=TestAjaxPage.findAll()
  render(contentType:"text/xml") {
   tests1 {
    for(b in tests) {
     test(title:b.title,dateCreated:b.dateCreated){
      h b.content
      }
    }
   }
  }

對(duì)應(yīng)的返回文檔為:

<tests1>
<test title="社區(qū)技術(shù)需求test" dateCreated="2011-01-07 15:53:32.922">
<h>haha</h>
</test>
</tests1>

這其實(shí)對(duì)于b/s,再混用c/s的程序中交換數(shù)據(jù)還是很有用的,so easy


render json就要麻煩點(diǎn)了,主要是1.1版本和1.3.6版本寫(xiě)法不一樣:
先寫(xiě)1.1的吧:
render(contentType:"text/json") {   
     max "max"
     resultList{
      Book.getAll().each{oneitem->
            Book(
         id:oneitem.id,
         name:oneitem.name,  
         )
      }
     }
    }
1.3.6的寫(xiě)法如下:
def tests=TestAjaxPage.findAll()
  render(contentType:"text/json") {
   max  (max1:"max")
   tests1= array{
    tests.each {one->
        TestAjaxPage(
       id:one.id,
       content:one.content,
       title:one.title,
       dateCreated:one.dateCreated
       )
    }
   }
  }
返回?cái)?shù)據(jù):{"max":{"max1":"max"},"tests1":[{"id":1,"content":"qewrqwe","title":"qwereqwr","dateCreated":"2011-01-07T10:11:52Z"}]}
最后var e=originalRequest.responseText.evalJSON();就是在js里調(diào)用下.evalJSON(),就可以看做對(duì)象訪問(wèn)數(shù)據(jù)。

版本不同,我手里一致用1.1的中文文檔,做的時(shí)候自己用的1.3.6,郁悶了好久,出不來(lái)。最后看1.3.6的文檔才發(fā)現(xiàn)寫(xiě)法不一樣呢









asdtiang 2011-01-10 12:24 發(fā)表評(píng)論
]]>
grails acegi 在線用戶統(tǒng)計(jì)http://www.tkk7.com/asdtiang/archive/2011/01/10/342669.htmlasdtiangasdtiangMon, 10 Jan 2011 04:03:00 GMThttp://www.tkk7.com/asdtiang/archive/2011/01/10/342669.htmlhttp://www.tkk7.com/asdtiang/comments/342669.htmlhttp://www.tkk7.com/asdtiang/archive/2011/01/10/342669.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/342669.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/342669.htmlhttp://grails.1312388.n4.nabble.com/Information-about-all-logged-in-users-with-Acegi-or-SpringSecurity-in-Grails-td1372911.html

根據(jù)文檔,基本操作翻譯如下:(注意只統(tǒng)計(jì)在線用戶,也就是登錄的用戶)

在SecurityConfig中設(shè)置 useHttpSessionEventPublisher 為true,
// HttpSessionEventPublisher
 useHttpSessionEventPublisher = true
這樣不用更改web.xml文件

resources.groovy:文件增加以下bean:
   beans = {

      sessionRegistry(org.springframework.security.concurrent.SessionRegistryImpl)

      sessionController(org.springframework.security.concurrent.ConcurrentSessionControllerImpl) {
         maximumSessions = -1 //表示同一個(gè)賬戶可以多次登錄,但只計(jì)一個(gè)在線用戶
         sessionRegistry = ref('sessionRegistry')
      }
   }

BootStap對(duì)應(yīng)增加以下內(nèi)容:
class BootStrap {

      def authenticationManager
      def sessionController

      def init = { servletContext ->
         authenticationManager.sessionController = sessionController
      } 
      def destroy = {}
   }


測(cè)試

class OnlineController {
 def sessionRegistry
 def test={
      render sessionRegistry.getAllPrincipals().length
  }

}
主要類(lèi)的文檔:
ConcurrentSessionControllerImpl:
http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/ConcurrentSessionControllerImpl.html
SessionRegistryImpl:
http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/SessionRegistryImpl.html









asdtiang 2011-01-10 12:03 發(fā)表評(píng)論
]]>
grails acegi ajax登錄http://www.tkk7.com/asdtiang/archive/2011/01/07/342512.htmlasdtiangasdtiangFri, 07 Jan 2011 06:47:00 GMThttp://www.tkk7.com/asdtiang/archive/2011/01/07/342512.htmlhttp://www.tkk7.com/asdtiang/comments/342512.htmlhttp://www.tkk7.com/asdtiang/archive/2011/01/07/342512.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/342512.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/342512.html
<script type='text/javascript'>
/////ajax登錄js
    function showLogin() {
        $('ajaxLogin').style.display 
= 'block';
    }

    
function onSuccessfulLogin(url) {
        
//alert(url);
        document.form1.action=url;
        document.form1.submit();
    }


    
function authAjax() {
        
var form = document.ajaxLoginForm;
        
var params = Form.serialize(form)
                
+ '&spring-security-redirect=/login/ajaxSuccess';
        
//Form.disable(form);
        new Ajax.Request(form.action, {
            method : 'POST',
            postBody : params,
            onSuccess : 
function(response) {
                
var responseText = response.responseText || '[]';
                
var json = responseText.evalJSON();
                
if (json.success) {
                    
//alert("ok");
                    onSuccessfulLogin(json.url);
                }
 else if (json.error) {
                    alert(json.error);
                    Form.enable(document.ajaxLoginForm);
                }
 else {
                    Element.update('loginMessage', responseText);
                    Form.enable(document.ajaxLoginForm);
                }

            }

        }
);
    }

</script>

login代碼示例:

def ajaxSuccess = {
        nocache(response)
        def config 
= authenticateService.securityConfig.security
        def postUrl 
= "${request.contextPath}${config.defaultTargetUrl}"
        render 
"{success: true,url:'${postUrl}'}"http://這里返回的是json
    }




def authfail 
= {

        def username 
= session[AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY]
        def msg 
= ''
        def exception 
= session[AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY]
        
if (exception) {
            
if (exception instanceof DisabledException) {
                msg 
= "[$username] 用戶被禁用."
            }

            
else {
                msg 
= "[$username] 錯(cuò)誤的用戶名或密碼."
            }

        }


        
if (isAjax()) {
            render 
"{error: '${msg}'}"
        }

        
else {
            flash.message 
= msg
            redirect action: auth, params: params
        }

    }






頁(yè)面:
 

<form id="form1" name="form1" target="_blank"></form>

<form action='${request.contextPath}/j_spring_security_check'

    method='POST' id='ajaxLoginForm' name='ajaxLoginForm' target="_blank">

用戶名<input id="j_username" name="j_username" type="text" />   

&nbsp;&nbsp;&nbsp;&nbsp;<input name="j_password" id="j_password" type="password" /><input onclick='authAjax(); return false;'type="image" src="login.jpg" />

</form>


暫時(shí)想不起來(lái)為什么用兩個(gè)form呢,最后引入js:<g:javascript library="prototype" />



asdtiang 2011-01-07 14:47 發(fā)表評(píng)論
]]>
grails searchable highlight顯示查詢結(jié)果http://www.tkk7.com/asdtiang/archive/2010/12/22/341336.htmlasdtiangasdtiangWed, 22 Dec 2010 09:46:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/12/22/341336.htmlhttp://www.tkk7.com/asdtiang/comments/341336.htmlhttp://www.tkk7.com/asdtiang/archive/2010/12/22/341336.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/341336.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/341336.html 以前用lucene時(shí),還比較好控制,用searchable還不太適應(yīng)。
def index = {
        
if (!params.q?.trim()) {
            
return [:]
        }

        
try {
            params.withHighlighter
= songHighlighter
            
return [searchResult: searchableService.search(params.q, params)]
        }
 catch (SearchEngineQueryParseException ex) {
            
return [parseException: true]
        }

    }

  
// This closure does the per-hit highlighting
// sr is the actual Map returned by search, so use that for storage
   def songHighlighter = { highlighter, index, sr ->
    
// lazy-init the storage
    if (!sr.highlights) {
        sr.highlights 
= []
    }
   
    
//content為domain的屬性
    sr.highlights[index] = highlighter.fragment("content")   
   }
// Do the search, passing he highlighter option

頁(yè)面更改:
 <g:each var="result" in="${searchResult.results}" status="index">
          
<div class="result">
            
<g:set var="className" value="${ClassUtils.getShortName(result.getClass())}" />
            
<g:set var="link" value="${createLink(controller: className[0].toLowerCase() + className[1..-1], action: 'show', id: result.id)}" />
            
<div class="name"><href="${link}">${result.title}</a></div>

            
<div class="desc">${searchResult.highlights[index]}</div>
            
<div class="displayLink">${link}</div>
          
</div>
        
</g:each>
查詢結(jié)果示例,直接輸出的searchResults

{total=3, hits=org.compass.core.impl.DefaultCompassDetachedHits@4eb331, max=10, scores=[0.34462962, 0.34462962, 0.19071755], results=[asdf, asdf, 中國(guó)(拼音:Zhōngguó),是中華人民共和國(guó)的簡(jiǎn)稱。古代華夏族建國(guó)于黃河流域一帶,以為居天下之中,故稱。還有一種解釋古代中國(guó)人認(rèn)為天圓地方,中國(guó)位于正中,故稱中國(guó),后成為專(zhuān)稱。清朝,作為官方正式稱呼,現(xiàn)代主要指中華人民共和國(guó)(英譯為:The People's Republic of China,簡(jiǎn)稱China)。 陸地面積960萬(wàn)平方千米,東部和南部大陸海岸線1.8萬(wàn)多千米,內(nèi)海和邊海的水域面積約470多萬(wàn)平方千米。海域分布有大小島嶼7600個(gè)。首都北京。中國(guó)具有五千年的文明史,是世界四大文明古國(guó)之一。因其文化傳播的廣泛性、獨(dú)特性和成熟性而對(duì)周邊國(guó)家和民族的文化產(chǎn)生深遠(yuǎn)影響,同時(shí)不斷吸收各個(gè)民族的文明成果,是世界上少數(shù)最早產(chǎn)生文明并延續(xù)至今的國(guó)家之一。 ], offset=0, highlights=[null, null, 國(guó)(拼音:Zhōngguó),是華人民共和國(guó)的簡(jiǎn)稱。古代華夏族建國(guó)于黃河流域一帶,以為居天下之,故稱。還有一種解釋古代國(guó)人認(rèn)為天圓地方,國(guó)位于正,故稱國(guó),后成為專(zhuān)稱。清朝,作為官方正式]}


查詢結(jié)果高亮顯示css為b,
只要在css里加上b{color : red;},就顯示為紅色了。

從結(jié)果可以看出,要了highlights就沒(méi)有必要要results,信息重復(fù),但each里用了,要下班了,明天研究下吧

剛到公司,想起來(lái)了,當(dāng)時(shí)在domain類(lèi)下重寫(xiě)了toString()方法,不重寫(xiě)results里就沒(méi)有那么多內(nèi)容了。



asdtiang 2010-12-22 17:46 發(fā)表評(píng)論
]]>
grails ajax分頁(yè)標(biāo)簽實(shí)現(xiàn)http://www.tkk7.com/asdtiang/archive/2010/11/26/339127.htmlasdtiangasdtiangFri, 26 Nov 2010 06:20:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/11/26/339127.htmlhttp://www.tkk7.com/asdtiang/comments/339127.htmlhttp://www.tkk7.com/asdtiang/archive/2010/11/26/339127.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/339127.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/339127.html閱讀全文

asdtiang 2010-11-26 14:20 發(fā)表評(píng)論
]]>
idea 中編輯properties文件http://www.tkk7.com/asdtiang/archive/2010/08/18/329258.htmlasdtiangasdtiangWed, 18 Aug 2010 10:47:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/08/18/329258.htmlhttp://www.tkk7.com/asdtiang/comments/329258.htmlhttp://www.tkk7.com/asdtiang/archive/2010/08/18/329258.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/329258.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/329258.html
操作,setting中選擇File Encoding,選擇UTF-8,打上最下角的鉤,就可以正常顯示資源文件了。而且可以正常編輯中文

asdtiang 2010-08-18 18:47 發(fā)表評(píng)論
]]>
grails fckeditor上傳圖片顯示不了的問(wèn)題http://www.tkk7.com/asdtiang/archive/2010/08/11/328519.htmlasdtiangasdtiangWed, 11 Aug 2010 04:06:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/08/11/328519.htmlhttp://www.tkk7.com/asdtiang/comments/328519.htmlhttp://www.tkk7.com/asdtiang/archive/2010/08/11/328519.html#Feedback5http://www.tkk7.com/asdtiang/comments/commentRss/328519.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/328519.htmlconfig配置如下:
appName='tatu'///為項(xiàng)目的名稱
//?set?per-environment?serverURL?stem?for?creating?absolute?links
environments?{
????production?
{
????????grails.serverURL?
=?"http://www.changeme.com"
????}

????development?
{
????????grails.serverURL?
=?"http://localhost:8080/${appName}"
????}

????test?
{
????????grails.serverURL?
=?"http://localhost:8080/${appName}"
????}


}
fckeditor?{
??????upload?
{
????????basedir?
=?"uploads/"? ///配置上傳目錄
????????baseurl?
=?"${grails.serverURL}/uploads/"http:////配置訪問(wèn)路徑
????????overwrite?
=?false
????????link?
{
??????????browser?
=?false
??????????upload?
=?true
??????????allowed?
=?[]
??????????denied?
=?['html',?'htm',?'php',?'php2',?'php3',?'php4',?'php5',
??????????????????
'phtml',?'pwml',?'inc',?'asp',?'aspx',?'ascx',?'jsp',
??????????????????
'cfm',?'cfc',?'pl',?'bat',?'exe',?'com',?'dll',?'vbs',?'js',?'reg',
??????????????????
'cgi',?'htaccess',?'asis',?'sh',?'shtml',?'shtm',?'phtm']
????????}

????????image?
{
??????????browser?
=?true
??????????upload?
=?true
??????????allowed?
=?['jpg',?'gif',?'jpeg',?'png']
??????????denied?
=?[]
????????}

????????flash?
{
??????????browser?
=?false
??????????upload?
=?false
??????????allowed?
=?['swf']
??????????denied?
=?[]
????????}

????????media?
{
??????????browser?
=?false
??????????upload?
=?false
??????????allowed?
=?['mpg',?'mpeg',?'avi',?'wmv',?'asf',?'mov']
??????????denied?
=?[]
????????}

??????}

????}


有時(shí)會(huì)遇到上傳了,顯示不了,查看一下上傳文件沒(méi)有在項(xiàng)目文件夾下面,這里可以改源碼:
找到FckeditorController的execute方法
private?execute(command,?currentFolder,?userSpace,?uploadOnly?=?false)?{
????????def?config?
=?grailsApplication.config.fckeditor

????????def?baseDir?
=?config.upload.basedir??:?Fckeditor.DEFAULT_BASEDIR
????????baseDir?
=?PathUtils.checkSlashes(baseDir,?"L+?R+",?true)
????????baseDir
=servletContext.getRealPath("/")?+baseDir?? //////增加這句就可以了
????????def?spaceDir?
=?PathUtils.sanitizePath(userSpace)
????????spaceDir?
=?PathUtils.checkSlashes(spaceDir,?"L-?R+",?true)

????????def?type?
=?params.Type
????????def?currentPath?
=?"${baseDir}${spaceDir}${type}${currentFolder}"
????????def?currentUrl
????????def?realPath


asdtiang 2010-08-11 12:06 發(fā)表評(píng)論
]]>
grails 實(shí)現(xiàn)級(jí)聯(lián)下拉列表http://www.tkk7.com/asdtiang/archive/2010/08/10/328392.htmlasdtiangasdtiangTue, 10 Aug 2010 03:22:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/08/10/328392.htmlhttp://www.tkk7.com/asdtiang/comments/328392.htmlhttp://www.tkk7.com/asdtiang/archive/2010/08/10/328392.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/328392.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/328392.htmlhttp://xihuyu2000.javaeye.com/blog/349722,這個(gè)地方可以實(shí)現(xiàn)兩級(jí),但我這里可以實(shí)現(xiàn)多級(jí),直接上代碼吧。

說(shuō)明,手機(jī)充值有服務(wù)商,面值,和區(qū)域,現(xiàn)在數(shù)據(jù)庫(kù)設(shè)計(jì)有點(diǎn)問(wèn)題,不過(guò)能說(shuō)明問(wèn)題就行。

class TelDeltaPro {
    String id 
    String name//服務(wù)商
    String area//區(qū)域
    String price//面值
    String goodId
    
int sum//沖值總次數(shù)
    static mapping={
        id generator:
'uuid'
    }

}

頁(yè)面主要代碼:
<tr>
            
<td><span class="indexText2">服務(wù)商</span></td>
            
<td><g:select name="proName"
                from
="${com.likai.asdtiang.domain.platform.TelDeltaPro.list()}"
                optionKey
="name" optionValue="name"
                onchange
="${remoteFunction(controller:'telDeltaPro', action:'price', params:'\'name=\'+this.value', update:[success:'price'])}"></g:select>
            
</td>
        
</tr>
        
<tr>
            
<td><span class="indexText2">面值</span></td>
            
<td>
            
<div id="price"></div>
            
            
</td>
        
</tr>
        
<tr>
            
<td><span class="indexText2">地區(qū)</span></td>
            
<td>
            
<div id="area"></div>
            
</td>
        
</tr>
        
<tr>
            
<td></td>
            
<td><input type="submit" value="提交"></td>
        
</tr>

主要是onchange="${remoteFunction(controller:'telDeltaPro', action:'price', params:'\'name=\'+this.value', update:[success:'price'])}"這個(gè)地方,remoteFunction查下文檔就可以了。

contorller主要代碼如下:
def price={
        log.info params.name
+"name"
        session.putValue 
"telName",params.name
        def str
="""<select id="proName" name="price" onchange="${remoteFunction(controller:'telDeltaPro',
         action:
'area', params:'\'price=\'+this.value', update:[success:'area'])}">"""
        def li
=TelDeltaPro.findAllByName(session.telName)
        li.each{
            str
=str+"""<option value="${it.price}">${it.price}</option>"""
        }
        str
=str+"""</select>"""
        render(text:str,contentType:
"text/html",encoding:"UTF-8")
    }
    def area
={
        log.info params.price
+"    price"
        def str
="""<select  name="area" >"""
        def li
=TelDeltaPro.findAllWhere(name:session.telName, price:params.price)
        li.each{
            str
=str+"""<option value="${it.area}">${it.area}</option>"""
        }
        str
=str+"""</select>"""
        render(text:str,contentType:
"text/html",encoding:"UTF-8")
        
    }
代碼應(yīng)該很簡(jiǎn)單的,看下就懂了。
最后應(yīng)該注意下:導(dǎo)入AJAX腳本,因?yàn)閞emoteFunction用到了AJAX
<g:javascript library="prototype" />


asdtiang 2010-08-10 11:22 發(fā)表評(píng)論
]]>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basicProcessingFilter'解決辦法http://www.tkk7.com/asdtiang/archive/2010/07/31/327654.htmlasdtiangasdtiangSat, 31 Jul 2010 09:51:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/07/31/327654.htmlhttp://www.tkk7.com/asdtiang/comments/327654.htmlhttp://www.tkk7.com/asdtiang/archive/2010/07/31/327654.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/327654.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/327654.htmlcontext.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean wit
h name 'basicProcessingFilter': Cannot resolve reference to bean 'authentication
Manager' while setting bean property 'authenticationManager'; nested exception i
s org.springframework.beans.factory.BeanCreationException: Error creating bean w
ith name 'authenticationManager': Cannot resolve reference to bean 'daoAuthentic
ationProvider' while setting bean property 'providers' with key [0]; nested exce
ption is org.springframework.beans.factory.BeanCreationException: Error creating
?bean with name 'daoAuthenticationProvider': Cannot resolve reference to bean 'u
serDetailsService' while setting bean property 'userDetailsService'; nested exce
ption is org.springframework.beans.factory.BeanCreationException: Error creating
?bean with name 'userDetailsService': Cannot resolve reference to bean 'authenti
cateService' while setting bean property 'authenticateService'; nested exception
?is org.springframework.beans.factory.BeanCreationException: Error creating bean
?with name 'authenticateService': Initialization of bean failed; nested exceptio
n is org.springframework.beans.factory.BeanCreationException: Error creating bea
n with name 'objectDefinitionSource': Invocation of init method failed; nested e
xception is java.lang.IllegalArgumentException: sessionFactory is required
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:328)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.DefaultListableBeanFactory.
preInstantiateSingletons(DefaultListableBeanFactory.java:557)
??????? at org.springframework.context.support.AbstractApplicationContext.finish
BeanFactoryInitialization(AbstractApplicationContext.java:842)
??????? at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:416)
??????? at org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext
.refresh(GrailsWebApplicationContext.java:153)
??????? at org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfigu
ration.getApplicationContext(DefaultRuntimeSpringConfiguration.java:154)
??????? at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.c
onfigure(GrailsRuntimeConfigurator.java:170)
??????? at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.c
onfigure(GrailsRuntimeConfigurator.java:131)
??????? at org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWeb
ApplicationContext(GrailsConfigUtils.java:102)
??????? at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebA
pplicationContext(GrailsContextLoader.java:69)
??????? at org.springframework.web.context.ContextLoader.initWebApplicationConte
xt(ContextLoader.java:192)
??????? at org.springframework.web.context.ContextLoaderListener.contextInitiali
zed(ContextLoaderListener.java:47)
??????? at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
t.java:3934)
??????? at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
429)
??????? at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:791)
??????? at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:77
1)
??????? at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)

??????? at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
a:987)
??????? at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j
ava:909)
??????? at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:495
)
??????? at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
??????? at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
:314)
??????? at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
??????? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

??????? at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
??????? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

??????? at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443
)
??????? at org.apache.catalina.core.StandardService.start(StandardService.java:5
16)
??????? at org.apache.catalina.core.StandardServer.start(StandardServer.java:710
)
??????? at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
??????? at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
??????? at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
??????? at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
??????? at java.lang.reflect.Method.invoke(Method.java:597)
??????? at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
??????? at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'authenticationManager': Cannot resolve reference to bean 'dao
AuthenticationProvider' while setting bean property 'providers' with key [0]; ne
sted exception is org.springframework.beans.factory.BeanCreationException: Error
?creating bean with name 'daoAuthenticationProvider': Cannot resolve reference t
o bean 'userDetailsService' while setting bean property 'userDetailsService'; ne
sted exception is org.springframework.beans.factory.BeanCreationException: Error
?creating bean with name 'userDetailsService': Cannot resolve reference to bean
'authenticateService' while setting bean property 'authenticateService'; nested
exception is org.springframework.beans.factory.BeanCreationException: Error crea
ting bean with name 'authenticateService': Initialization of bean failed; nested
?exception is org.springframework.beans.factory.BeanCreationException: Error cre
ating bean with name 'objectDefinitionSource': Invocation of init method failed;
?nested exception is java.lang.IllegalArgumentException: sessionFactory is requi
red
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:328)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveManagedList(BeanDefinitionValueResolver.java:355)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:322)
??????? ... 45 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'daoAuthenticationProvider': Cannot resolve reference to bean
'userDetailsService' while setting bean property 'userDetailsService'; nested ex
ception is org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'userDetailsService': Cannot resolve reference to bean 'authen
ticateService' while setting bean property 'authenticateService'; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating be
an with name 'authenticateService': Initialization of bean failed; nested except
ion is org.springframework.beans.factory.BeanCreationException: Error creating b
ean with name 'objectDefinitionSource': Invocation of init method failed; nested
?exception is java.lang.IllegalArgumentException: sessionFactory is required
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:328)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:322)
??????? ... 58 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'userDetailsService': Cannot resolve reference to bean 'authen
ticateService' while setting bean property 'authenticateService'; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating be
an with name 'authenticateService': Initialization of bean failed; nested except
ion is org.springframework.beans.factory.BeanCreationException: Error creating b
ean with name 'objectDefinitionSource': Invocation of init method failed; nested
?exception is java.lang.IllegalArgumentException: sessionFactory is required
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:328)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:322)
??????? ... 69 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'authenticateService': Initialization of bean failed; nested e
xception is org.springframework.beans.factory.BeanCreationException: Error creat
ing bean with name 'objectDefinitionSource': Invocation of init method failed; n
ested exception is java.lang.IllegalArgumentException: sessionFactory is require
d
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:322)
??????? ... 80 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'objectDefinitionSource': Invocation of init method failed; ne
sted exception is java.lang.IllegalArgumentException: sessionFactory is required

??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:450)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:290)
??????? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:287)
??????? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:189)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.autowireByName(AbstractAutowireCapableBeanFactory.java:1085)
??????? at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableB
eanFactory.autowireByName(ReloadAwareAutowireCapableBeanFactory.java:175)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1035)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
??????? ... 87 more
Caused by: java.lang.IllegalArgumentException: sessionFactory is required
??????? at org.springframework.util.Assert.notNull(Assert.java:112)
??????? at org.codehaus.groovy.grails.plugins.springsecurity.RequestmapFilterInv
ocationDefinition.afterPropertiesSet(RequestmapFilterInvocationDefinition.java:1
66)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
??????? at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
??????? ... 98 more
2010-7-30 10:50:42 org.apache.catalina.core.StandardContext start



GRAILS在發(fā)布成WAR包在TOMCAT6中運(yùn)行出現(xiàn)這個(gè)錯(cuò)誤,解決辦法:
在grails>下輸入clean
再重先生成WAR,問(wèn)題解決



asdtiang 2010-07-31 17:51 發(fā)表評(píng)論
]]>
grails acegi使用----注冊(cè)時(shí)發(fā)送emailhttp://www.tkk7.com/asdtiang/archive/2010/04/20/318883.htmlasdtiangasdtiangTue, 20 Apr 2010 10:29:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/04/20/318883.htmlhttp://www.tkk7.com/asdtiang/comments/318883.htmlhttp://www.tkk7.com/asdtiang/archive/2010/04/20/318883.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/318883.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/318883.html     useMail = true
    mailHost = "smtp.sina.com"
    mailUsername = "xxxxxxx"
    mailPassword = "xxxxxxx"
    mailProtocol = "smtp"
    mailFrom = "xxxxxxx@sina.com"
    mailPort = 25
    javaMailProperties=["mail.smtp.auth":"true","mail.smtp.socketFactory.fallback":"false"]
    defaultRole="user"
    defaultTargetUrl = "/login/main.gsp"



其中javaMailProperties=["mail.smtp.auth":"true","mail.smtp.socketFactory.fallback":"false"]是關(guān)鍵,spring的email默認(rèn)不進(jìn)行認(rèn)證的,如果只加"mail.smtp.auth":"true",也不行,問(wèn)了下網(wǎng)友,加上后面的屬性就行了。
在這里也學(xué)習(xí)到grails的service歸約規(guī)則:
8. The Service Layer

Grails服務(wù)的一個(gè)重要方面是,有能力利用Spring 框架的依賴注入能力。 Grails支持 "依賴注入通過(guò)規(guī)約". 換句話說(shuō),你可以使用一個(gè)屬性名表示的一個(gè)服務(wù)的類(lèi)名,自動(dòng)把他們注入到 controllers, tag libraries,等等。

作為示例,給定的服務(wù)名為BookService, 如果你像下面這樣在controller中放置一個(gè)名為bookService 的屬性:

class BookController {
def bookService
…
}

在這種情況下,Spring 容器將自動(dòng)注入一個(gè)基于它自己配置作用域的服務(wù)實(shí)體。所有的依賴注入是通過(guò)名字的; Grails 不支持類(lèi)型注入。你也可以像下面這樣指定類(lèi)型:

class AuthorService {
BookService bookService
}

不過(guò), 存在副作用,即在開(kāi)發(fā)模式下BookService的改變會(huì)在加載時(shí)拋出一個(gè)錯(cuò)誤。

依賴注入與服務(wù)

你可以使用相同的技術(shù)在一個(gè)服務(wù)中注入另一個(gè)服務(wù)。如果說(shuō),你的AuthorService需要一個(gè) BookService, 可以像下面這樣聲明 AuthorService:

class AuthorService {
def bookService
}

依賴注入與Domain類(lèi)

你甚至可以在domain類(lèi)中注入服務(wù),這可以幫助開(kāi)發(fā)出各種豐富的domain:

class Book {
…
def bookService
def buyBook() {
bookService.buyBook(this)
}
}



asdtiang 2010-04-20 18:29 發(fā)表評(píng)論
]]>
gsp學(xué)習(xí)筆記pageinatehttp://www.tkk7.com/asdtiang/archive/2010/02/27/314050.htmlasdtiangasdtiangSat, 27 Feb 2010 03:36:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/02/27/314050.htmlhttp://www.tkk7.com/asdtiang/comments/314050.htmlhttp://www.tkk7.com/asdtiang/archive/2010/02/27/314050.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/314050.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/314050.htmlGrails Reference

paginate

用途

創(chuàng)建下一個(gè)/上一個(gè) 按鈕和一個(gè) breadcrumb 實(shí)現(xiàn)分頁(yè).

示例

domain class實(shí)例:

class Book {
     String title
     String author
}

controller實(shí)例:

class BookController {
  def list = {
     [books: Book.list(params)]
  }
}

標(biāo)簽頁(yè)代碼:

						<g:paginate controller="book" action="list" total="${Book.count()}" />
				

						<g:paginate next="Forward" prev="Back"
            maxsteps="0" controller="book"
            action="list" total="${Book.count()}" />
				

描述

屬性

  • total (必需) - 頁(yè)數(shù)的總數(shù)量.
  • action (可選) - 要鏈接的action名稱,如果不指定,鏈接到當(dāng)前action.
  • controller (可選) - 要鏈接的controller名稱,如果不指定,鏈接到當(dāng)前的controller.
  • id (可選) - link的id
  • params (可選) - 包含請(qǐng)求參數(shù)的 map.
  • prev (可選) - 顯示上一頁(yè) (根據(jù)默認(rèn)值定義 "Previous" 做為默認(rèn)的分頁(yè))
  • next (可選) - 顯示下一頁(yè)
  • max (可選) - 每頁(yè)顯示的總記錄 (默認(rèn)為 10條記錄).
  • maxsteps (可選) - 分頁(yè)的數(shù)量.
  • offset (可選) - 僅用于 params.offset 為空.


asdtiang 2010-02-27 11:36 發(fā)表評(píng)論
]]>
gsp學(xué)習(xí)筆記each select sethttp://www.tkk7.com/asdtiang/archive/2010/02/24/313763.htmlasdtiangasdtiangWed, 24 Feb 2010 02:37:00 GMThttp://www.tkk7.com/asdtiang/archive/2010/02/24/313763.htmlhttp://www.tkk7.com/asdtiang/comments/313763.htmlhttp://www.tkk7.com/asdtiang/archive/2010/02/24/313763.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/313763.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/313763.html
<g:select?name="category.id"?from="${org.asdtiang.study.grails.Category.list()}"
??????????????????????????????????????????????optionKey
="id"?optionValue="categoryName"
?value
="${goodsInstance?.category?.categoryName}"??/>
from指定數(shù)據(jù)來(lái)源。
optionKey="id"表示依次用數(shù)據(jù)源中每個(gè)Category的id作為每個(gè)選項(xiàng)的值(即<option value=""/>中的value對(duì)應(yīng)的值)
optionValue="categoryName"表示用每個(gè)Category的categoryName作為每個(gè)選項(xiàng)的顯示結(jié)果(如:<option>test</option> 中test對(duì)應(yīng)內(nèi)容)
value指定當(dāng)前列表中與value等值的選項(xiàng)。

1?<html>
2???<body>
3?????Hello?${params.name}
4???</body>
5?</html>
6?
GSP also supports logical and iterative tags out of the box. For logic there are if, else and elseif which support your typical branching scenarios:
1?<g:if?test="${session.role?==?'admin'}">
2????<%--?show?administrative?functions?--%>
3?</g:if>
4?<g:else>
5????<%--?show?basic?functions?--%>
6?</g:else>
7?
8?

For iteration GSP has the each and while tags:

?1?<g:each?in="${[1,2,3]}"?var="num">
?2????<p>Number?${num}</p>
?3?</g:each>
<g:each?in="${goodsInstanceList}"?status="i"?var="goodsInstance">
<%-- in指定遍歷的集合,status指定索引,var指定每次取出元素的名稱,默認(rèn)為it --%>
??????????????????????? <tr?class="${(i?%?2)?==?0???'odd'?:?'even'}">
????????????????????????
????????????????????????????
<td><g:link?action="show"?id="${goodsInstance.id}">${fieldValue(bean:?goodsInstance,?field:?"id")}</g:link></td>
????????????????????????
????????????????????????????
<td>${fieldValue(bean:?goodsInstance,?field:?"title")}</td>???????????????????????
<%--fieldValue方法的作用是取出指定bean的指定屬性,能自動(dòng)執(zhí)行encodeAsHtml()操作,以防止跨站腳本攻擊--%>
????????????????????????????<td><img?alt="不能顯示"?src="${fieldValue(bean:?goodsInstance,?field:?"photoUrl")}"?style="width:300px;?height:300px"?></td>
????????????????????????
????????????????????????????
<td>${goodsInstance.category?.categoryName}</td>

????????????????????????
????????????????????????
</tr>
??
</g:each>

?4?
?5?<g:set?var="num"?value="${1}"?/>
?6?<g:while?test="${num?<?5?}">
?7?<p>Number?${num++}</p>
?8?</g:while>
?9?
10?





asdtiang 2010-02-24 10:37 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 亚洲色欲啪啪久久WWW综合网| 国产免费黄色无码视频| 毛片在线全部免费观看| 亚洲AⅤ男人的天堂在线观看| 日本卡1卡2卡三卡免费| xvideos亚洲永久网址| 亚洲国产成人精品无码区在线秒播 | 韩日电影在线播放免费版| 成人免费看吃奶视频网站| 亚洲成人午夜在线| 人禽伦免费交视频播放| 在线免费观看一级毛片| 亚洲最大黄色网站| 最新国产乱人伦偷精品免费网站| 免费A级毛片无码久久版| 亚洲高清一区二区三区| 久久永久免费人妻精品下载| 久久99亚洲综合精品首页| 亚洲AV无码片一区二区三区| 99在线精品免费视频九九视| 亚洲人成电影在线天堂| 黄桃AV无码免费一区二区三区| 免费国产在线观看| 亚洲中文字幕AV每天更新| 91精品国产免费久久久久久青草| 久久久亚洲精品国产| 久久久久久国产a免费观看不卡| 一区二区三区亚洲视频| 精品韩国亚洲av无码不卡区| 午夜色a大片在线观看免费| 亚洲综合综合在线| 久久99精品免费视频| 国产V亚洲V天堂A无码| 中文日本免费高清| 亚洲伊人久久成综合人影院| 黄色毛片视频免费| 四虎永久成人免费| 亚洲午夜在线电影| 免费视频一区二区| 亚洲AV无码久久精品成人| A片在线免费观看|