[英]Integration of struts2 with Liferay?
我制作了一个示例应用程序,将struts2与liferay集成在一起。 但是,如果没有调用Action类中的setter方法,则会出现问题。 我通过struts表单将参数传递给Action类,但是当我通过welcome.jsp
打印这些值时,我得到的值分别为name
null和id
0。 这是我的表格代码:-
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<s:form action="product">
<s:textfield name="id" label="Product Id"></s:textfield>
<s:textfield name="name" label="Product Name"></s:textfield>
<s:textfield name="price" label="Product Price"></s:textfield>
<s:submit value="save"></s:submit>
</s:form>
struts.xml的代码如下:-
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts
Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.objectFactory.spring.autoWire" value="type" />
<package name="view" namespace="/view" extends="struts-portlet-default">
<action name="product" class="com.abhishek.Product" method="execute">
<result name="success">/welcome.jsp</result>
</action>
<action name="index"
class="com.abhishek.Product">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
Product.java的代码如下:-
package com.abhishek;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
public class Product extends ActionSupport implements ServletRequestAware {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
HttpServletRequest request;
private int id;
private String name;
private float price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("Inside setName");
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String execute(){
System.out.println("name is"+ ActionContext.getContext().getParameters().get("name"));
System.out.println("name="+name);
return "success";
}
public String execute1(){
return "success";
}
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request=request;
}
public HttpServletRequest getServletRequest()
{
return this.request;
}
}
welcome.jsp的代码如下:-
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/struts-tags" prefix="s" %>
Product Id:<s:property value="id"/><br/>
Product Name:<s:property value="name"/><br/>
Product Price:<s:property value="price"/><br/>
我想问问是否真的有可能将struts2应用程序与liferay集成在一起,如果可以,为什么不调用setter方法?我已经在liferay中的struts2中创建了几个应用程序,但也遇到了同样的问题。.所以请帮忙。 。任何帮助,将不胜感激。
尝试检查参数值,而不使用getParameter(“ yourParameter”)方法读取。 检查它们是否正确打印,否则模型本身未正确初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.