繁体   English   中英

Struts2是否与Liferay集成?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM