GAE上的Spring mvc + JSF [英] Spring mvc + JSF on GAE
本文介绍了GAE上的Spring mvc + JSF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在GAE上执行spring mvc + primeFaces时遇到了问题,我认为除了当我尝试通过发送post来修改我的bean的值时,所有工作都正常,值与以前保持一致。这里是代码:
web.xml
< context-param>
< param-name> contextConfigLocation< / param-name>
< param-value> /WEB-INF/main-servlet.xml< / param-value>
< / context-param>
< context-param>
< param-name> javax.faces.PROJECT_STAGE< / param-name>
<参数值>生产< /参数值>
< / context-param>
< context-param>
< param-name> com.sun.faces.enableThreading< / param-name>
< param-value> false< /参数值>
< / context-param>
< listener>
< listener-class> org.springframework.web.context.ContextLoaderListener< / listener-class>
< / listener>
< servlet>
< servlet-name> Faces Servlet< / servlet-name>
< servlet-class> javax.faces.webapp.FacesServlet< / servlet-class>
1< / load-on-startup>
< / servlet>
< listener>
< listener-class>
com.remote.control.web.ApiKeyInitializer
< / listener-class>
< / listener>
< servlet>
< servlet-name>主< / servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet< / servlet-class>
<载入启动> 2< /载入启动>
< / servlet>
< servlet-mapping>
< servlet-name>主< / servlet-name>
< url-pattern> /< / url-pattern>
< / servlet-mapping>
< servlet-mapping>
< servlet-name> Faces Servlet< / servlet-name>
< url-pattern> *。xhtml< / url-pattern>
< / servlet-mapping>
< security-constraint>
< web-resource-collection>
< url-pattern> / home< / url-pattern>
< / web-resource-collection>
< auth-constraint>
<角色名称> *< /角色名称>
< / auth-constraint>
< / security-constraint>
< servlet>
< servlet-name> SystemServiceServlet< / servlet-name>
< servlet-class> com.google.api.server.spi.SystemServiceServlet< / servlet-class>
< init-param>
< param-name>服务< / param-name>
< param-value />
< / init-param>
< / servlet>
< servlet-mapping>
< servlet-name> SystemServiceServlet< / servlet-name>
< url-pattern> / _ ah / spi / *< / url-pattern>
< / servlet-mapping>
< / web-app>
main-servlet.xml
<?xml version =1.0encoding =UTF-8?>
< beans>
< context:component-scan base-package =com.remote.control.controller/>
< context:component-scan base-package =com.remote.control.service/>
< mvc:annotation-driven />
< mvc:resources mapping =/ res / **location =/ WEB-INF / res //>
id =viewResolver
class =org.springframework.web.servlet.view.InternalResourceViewResolver>
name =prefix
value =/ WEB-INF / jsp //>
name =suffix
value =。xhtml/>
< / bean>
< / beans>
faces-config.xml
<?xml version =1.0encoding =UTF-8?>
< faces-config>
< application>
< el-resolver> org.springframework.web.jsf.el.SpringBeanFacesELResolver< / el-resolver>
< / application>
< / faces-config>
HomeController.java
@Controller
public class HomeController {
private Logger logger = Logger.getLogger(getClass()。getName());
@Autowired
Bean bean;
@RequestMapping(value =/ home,method = RequestMethod.GET)
public ModelAndView homeGet(){
ModelAndView mv = new ModelAndView(index );
bean.setParam1(111111111);
bean.setParam2(22222222222);
bean.setParam3(3333333333);
mv.addObject(task,bean);
return mv;
$ b @RequestMapping(value =/ home,method = RequestMethod.POST)
public ModelAndView homePost(){
ModelAndView mv =新的ModelAndView(索引);
logger.warning(param1+ bean.getParam1());
logger.warning(param2+ bean.getParam2());
logger.warning(param3+ bean.getParam3());
mv.addObject(task,bean);
}
}
Bean.java
@Component
@Scope(value =session, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class Bean实现Serializable {
private String param1;
private String param2;
private String param3;
public String getParam1(){
return param1;
}
public void setParam1(String param1){
this.param1 = param1;
}
public String getParam2(){
return param2;
}
public void setParam2(String param2){
this.param2 = param2;
}
public String getParam3(){
return param3;
}
public void setParam3(String param3){
this.param3 = param3;
}
}
index.xhtml
< html>
< ui:composition template =baseLayout.xhtml>
< ui:define name =content>
< form action =homemethod =post>
< h:panelGrid style =margin-top:20px; columns =2cellpadding =10>
< p:outputPanel autoUpdate =true>
< p:inputText value =#{task.param1}/>
< p:inputText value =#{task.param2}/>
< p:inputTextarea value =#{task.param3}id =textrows =10cols =50/>
< / p:outputPanel>
< / h:panelGrid>
< button value =submit/>
< / form>
< / ui:define>
< / ui:composition>
< / html>
解决方案
只需转动
< form action =homemethod =post>
< h:panelGrid style =margin-top:20px; columns =2cellpadding =10>
< p:outputPanel autoUpdate =true>
< p:inputText value =#{task.param1}/>
< p:inputText value =#{task.param2}/>
< p:inputTextarea value =#{task.param3}id =textrows =10cols =50/>
< / p:outputPanel>
< / h:panelGrid>
< button value =submit/>
< / form>
成
< H:形式>
< h:panelGrid style =margin-top:20px; columns =2cellpadding =10>
< p:outputPanel autoUpdate =true>
< p:inputText value =#{task.param1}/>
< p:inputText value =#{task.param2}/>
< p:inputTextarea value =#{task.param3}id =textrows =10cols =50/>
< / p:outputPanel>
< / h:panelGrid>
< p:commandButton value =submitaction =#{task.myMethod}/>
< / h:表格>
使用以下方法
public void myMethod(){
System.out.println(param1);
System.out.println(param2);
System.out.println(param3);
}
I have a problem with implementing spring mvc + primeFaces on GAE, i think that all works fine except when i try to modify values of my bean by sending post, values remain the same as before. Here is code:
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/main-servlet.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.enableThreading</param-name>
<param-value>false</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<listener>
<listener-class>
com.remote.control.web.ApiKeyInitializer
</listener-class>
</listener>
<servlet>
<servlet-name>main</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<url-pattern>/home</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value/>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
</web-app>
main-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<context:component-scan base-package="com.remote.control.controller" />
<context:component-scan base-package="com.remote.control.service" />
<mvc:annotation-driven />
<mvc:resources mapping="/res/**" location="/WEB-INF/res/" />
<bean
id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property
name="prefix"
value="/WEB-INF/jsp/" />
<property
name="suffix"
value=".xhtml" />
</bean>
</beans>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config >
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
</faces-config>
HomeController.java
@Controller
public class HomeController {
private Logger logger = Logger.getLogger(getClass().getName());
@Autowired
Bean bean;
@RequestMapping(value="/home", method=RequestMethod.GET)
public ModelAndView homeGet() {
ModelAndView mv=new ModelAndView("index");
bean.setParam1("111111111");
bean.setParam2("22222222222");
bean.setParam3("3333333333");
mv.addObject("task",bean);
return mv;
}
@RequestMapping(value="/home", method=RequestMethod.POST)
public ModelAndView homePost() {
ModelAndView mv=new ModelAndView("index");
logger.warning("param1"+ bean.getParam1());
logger.warning("param2" + bean.getParam2());
logger.warning("param3" + bean.getParam3());
mv.addObject("task",bean);
}
}
Bean.java
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Bean implements Serializable {
private String param1;
private String param2;
private String param3;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
public String getParam3() {
return param3;
}
public void setParam3(String param3) {
this.param3 = param3;
}
}
index.xhtml
<html>
<ui:composition template="baseLayout.xhtml">
<ui:define name="content">
<form action="home" method="post">
<h:panelGrid style="margin-top:20px;" columns="2" cellpadding="10">
<p:outputPanel autoUpdate="true">
<p:inputText value="#{task.param1}" />
<p:inputText value="#{task.param2}" />
<p:inputTextarea value="#{task.param3}" id="text" rows="10" cols="50" />
</p:outputPanel>
</h:panelGrid>
<button value="submit" />
</form>
</ui:define>
</ui:composition>
</html>
解决方案
Just turn
<form action="home" method="post">
<h:panelGrid style="margin-top:20px;" columns="2" cellpadding="10">
<p:outputPanel autoUpdate="true">
<p:inputText value="#{task.param1}" />
<p:inputText value="#{task.param2}" />
<p:inputTextarea value="#{task.param3}" id="text" rows="10" cols="50" />
</p:outputPanel>
</h:panelGrid>
<button value="submit" />
</form>
Into
<h:form>
<h:panelGrid style="margin-top:20px;" columns="2" cellpadding="10">
<p:outputPanel autoUpdate="true">
<p:inputText value="#{task.param1}" />
<p:inputText value="#{task.param2}" />
<p:inputTextarea value="#{task.param3}" id="text" rows="10" cols="50" />
</p:outputPanel>
</h:panelGrid>
<p:commandButton value="submit" action="#{task.myMethod}"/>
</h:form>
with the following method
public void myMethod(){
System.out.println(param1);
System.out.println(param2);
System.out.println(param3);
}
这篇关于GAE上的Spring mvc + JSF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文