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
<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" />
密 碼<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" />
<g:javascript library="prototype" />
??????? 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)題解決
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ò)誤。
你可以使用相同的技術(shù)在一個(gè)服務(wù)中注入另一個(gè)服務(wù)。如果說(shuō),你的AuthorService
需要一個(gè)
BookService
, 可以像下面這樣聲明 AuthorService
:
class AuthorService { def bookService }
你甚至可以在domain類(lèi)中注入服務(wù),這可以幫助開(kāi)發(fā)出各種豐富的domain:
class Book { … def bookService def buyBook() { bookService.buyBook(this) } }
創(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 為空. application
- The javax.servlet.ServletContext
instance
applicationContext
The Spring ApplicationContext
instance
flash
- The flash object
grailsApplication
- The GrailsApplication
instance
out
- The response writer for writing to the output stream
params
- The params object for retrieving request
parameters
request
- The HttpServletRequest
instance
response
- The HttpServletResponse
instance
session
- The HttpSession
instance
webRequest
- The GrailsWebRequest
instance 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?