2016-09-28 25 views
0

私はstruts2とliferayを統合するためのサンプルアプリケーションを作成しました。しかし、問題は、Actionクラスのsetterメソッドが呼び出されないときに発生します。私は、ストラットフォームを通じてActionクラスにパラメータを渡していますが、welcome.jspを介してこれらの値を出力しているときは、nameの場合はnull、idの場合はnullとして値を取得しています。ここでは、フォームのための私のコードは次のとおりです。 -struts2とLiferayの統合?

<%@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でいくつかのアプリケーションを作成しましたが、 ..どんな助けもありがとう。

答えて

0

getParameter( "yourParameter")メソッドを使用せずにパラメータ値をチェックしてみてください。それらが正しく印刷されているかどうかを確認してください。

+0

私はすでにそれを行い、モデルは初期化されていません。なぜ私はモデルが初期化されていないのか知りたいのですか?モデルを初期化するためにsetterメソッドが呼び出されないのはなぜですか?助けてあげてください。 –

+0

作業環境は何ですか、私はJavaバージョンとstruts2とサーバーを意味しますか?いつかものを間違ってしまう原因にもなります。 –

関連する問題