class OnlineController {
def sessionRegistry
def test={
render sessionRegistry.getAllPrincipals().length
}
}
主要類的文檔:
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>
暫時想不起來為什么用兩個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在發布成WAR包在TOMCAT6中運行出現這個錯誤,解決辦法:
在grails>下輸入clean
再重先生成WAR,問題解決
Grails服務的一個重要方面是,有能力利用Spring 框架的依賴注入能力。 Grails支持 "依賴注入通過規約". 換句話說,你可以使用一個屬性名表示的一個服務的類名,自動把他們注入到 controllers, tag libraries,等等。
作為示例,給定的服務名為BookService
,
如果你像下面這樣在controller中放置一個名為bookService
的屬性:
class BookController { def bookService … }
在這種情況下,Spring 容器將自動注入一個基于它自己配置作用域的服務實體。所有的依賴注入是通過名字的; Grails 不支持類型注入。你也可以像下面這樣指定類型:
class AuthorService { BookService bookService }
不過, 存在副作用,即在開發模式下BookService
的改變會在加載時拋出一個錯誤。
你可以使用相同的技術在一個服務中注入另一個服務。如果說,你的AuthorService
需要一個
BookService
, 可以像下面這樣聲明 AuthorService
:
class AuthorService { def bookService }
你甚至可以在domain類中注入服務,這可以幫助開發出各種豐富的domain:
class Book { … def bookService def buyBook() { bookService.buyBook(this) } }
創建下一個/上一個 按鈕和一個 breadcrumb 實現分頁.
domain class實例:
class Book { String title String author }
controller實例:
class BookController { def list = { [books: Book.list(params)] } }
標簽頁代碼:
<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
(必需) - 頁數的總數量.
action
(可選) - 要鏈接的action名稱,如果不指定,鏈接到當前action.
controller
(可選) -
要鏈接的controller
名稱,如果不指定,鏈接到當前的controller
.
id
(可選) - link的id
params
(可選) - 包含請求參數的 map.
prev
(可選) - 顯示上一頁 (根據默認值定義 "Previous" 做為默認的分頁)
next
(可選) - 顯示下一頁
max
(可選) - 每頁顯示的總記錄 (默認為 10條記錄).
maxsteps
(可選) - 分頁的數量.
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指定每次取出元素的名稱,默認為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的指定屬性,能自動執行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?