私は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でいくつかのアプリケーションを作成しましたが、 ..どんな助けもありがとう。
私はすでにそれを行い、モデルは初期化されていません。なぜ私はモデルが初期化されていないのか知りたいのですか?モデルを初期化するためにsetterメソッドが呼び出されないのはなぜですか?助けてあげてください。 –
作業環境は何ですか、私はJavaバージョンとstruts2とサーバーを意味しますか?いつかものを間違ってしまう原因にもなります。 –