我需要支持使用grails 1.3.6的应用程序的Basic Auth和Formbased身份验证.是否可以使用Spring Security来实现?现在我确实为应用程序提供了基于表单的身份验证,我还需要做些什么来支持它们?还是不可能?
我的URLMappings中有以下映射
addPurchase:"/addPurchase" {
controller = "cart"
action = "addPurchase"
}
Run Code Online (Sandbox Code Playgroud)
我从我的GSP拨打了一个AJAX电话
function addPurchase(purchaseJSON, amount) {
$.ajax({
url: 'addPurchase',
data: {
purchase: purchaseJSON
// quantity: amount
},
type : "POST",
complete:function(data) {
updateCart();
updateOrderSummary(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我的控制器代码是
def addPurchase = {
def result = cartService.addPurchase(session,params)
log.debug"Results from addPurchase" + result
response.status = 200
return result as JSON
}
Run Code Online (Sandbox Code Playgroud)
虽然我在控制台中看到输出,但在浏览器中出现错误404.为什么会这样?我的grails版本是@ 1.3.7
我刚刚将应用程序部署到tomcat 6.0.32版本,我从spring获得了这个错误.我认为xml无效
PAS:2011-12-28 14:19:08,585 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - PAS:2011-12-28 14:19:08,592 ERROR [org.springframework.web.context.ContextLoader ] - org.springframework.beans.factory.BeanDefinitionStoreException:来自ServletContext资源[/WEB-INF/config/applicationContext.xml]的XML文档中的第15行无效; 嵌套异常是org.xml.sax.SAXParseException:文档根元素"beans",必须与DOCTYPE根"null"匹配.org.xml.sax.SAXParseException:文档根元素"beans"必须与DOCTYPE根"null"匹配.在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)在com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1621)在com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.的java:1900)在com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764)在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement( XMLDocumentFragmentScannerImpl.java:1363)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:131 8)在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3104)在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next( XMLDocumentScannerImpl.java:922)在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument( XMLDocumentFragmentScannerImpl.java:511)com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse( XML11Configuration.java:737)com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse( DOMParser.java:235)位于org.springframework.beans.factory.xml.X的com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)位于org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java: 148)在Org.springframework.web的org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:129)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:145)位于org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext .java:89)在org.springframework.contex t.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262)org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.的java:252)在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)在org.apache.catalina.core .StandardContext.listenerStart(StandardContext.java:4205)在org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)在org.apache.catalina.startup.HostConfig.deployWAR( HostConfig.java:943)at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)在org.apache.catalina.startup.HostConfig.start( HostConfig.java:1315)在org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)在org.apache.catalina .core.ContainerBase.start(ContainerBase.java:1061)org.apache.catalina.core.StandardHost.start(StandardHost.java:840)org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) )org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)位于org.apache.catalina.core.StandardServer的org.apache.catalina.core.StandardService.start(StandardService.java:525).在org.apache.catalina.startup.Catalina.start(Catalina.java:595)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)sun.reflect.NativeMethodAccessorImpl.invoke上启动(StandardServer.java:754)NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method.invoke(Method.java:597)在org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:289)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
XMl是:
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-2.5.xsd">
<context:property-placeholder location="WEB-INF/passport.properties, WEB-INF/config/server.properties"/>
<util:properties id="props" location="WEB-INF/passport.properties" />
<context:component-scan base-package="util" />
<bean id="passportConfig" class="util.PassportBaseConfig"
p:configLocation="WEB-INF/" autowire="no" factory-method="getInstance"
init-method="init" p:userDAO-ref="passportUserDao" p:teamDAO-ref="passportTeamDao"
p:serverId="${serverId}">
<constructor-arg ref="props" />
</bean>
Run Code Online (Sandbox Code Playgroud) 我在客户端有一个按钮,当我按下时,我在服务器上执行一些操作然后再次调用list方法.一切正常,但是让我说我在第3页并点击一个项目,当页面刷新时它会转到第1页.我不知道我在哪个页面.有没有办法维护页码?