Ich habe eine Beispielanwendung erstellt, um struts2 mit liveray zu integrieren. Das Problem tritt jedoch auf, wenn die Setter-Methode in der Action-Klasse nicht aufgerufen wird. Ich übergebe Parameter über das Struts-Formular an die Action-Klasse, aber wenn ich diese Werte über welcome.jsp
drucke, bekomme ich Werte wie Null für name
und 0 für id
. Hier ist mein Code für Form: -Integration von Struts2 mit 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>
Der Code für struts.xml ist wie folgt: -
<?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>
Der Code für Product.java ist wie folgt: -
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;
}
}
Der Code für welcome.jsp lautet wie folgt: -
<%@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/>
Ich möchte fragen, ob es wirklich möglich ist, die Anwendung struts2 mit liveray zu integrieren, und wenn ja, warum wird die Setter-Methode nicht aufgerufen? Ich habe bereits einige Anwendungen in struts2 in liveray gemacht, kam aber mit demselben Problem ... Also bitte helfen ..eine Hilfe würde geschätzt werden.
ich habe das schon getan und das Modell ist nicht initialisiert..das, was ich wissen will, warum ist das Modell nicht initialisiert? Warum werden Setter-Methoden nicht aufgerufen, um das Modell zu initialisieren? Bitte helfen Sie ... im Voraus. –
Was ist die Arbeitsumgebung, ich meine Java-Version und struts2 und Server? Denn das lässt auch mal etwas schief gehen. –