2014-09-07 3 views
0

이 링크의 클릭과 같이 해당 페이지의 특정 동작이 호출되는 해당 링크를 클릭하면 하나의 링크가있는 index.jsp가 있습니다. 이제는 이미 페이지를 표시해야합니다. 많은 입력 텍스트 필드와 함께 채워진 다중 선택 목록, 다음 페이지 (예 : transactionData.jsp)의 필드와 바인딩되는 TransactionBean이 채워진 액션 생성자에서실행중인 Bean에 액세스 할 수 없습니다. Struts2

populated multiselected list를 사용하여 transactionData.jsp 페이지가 올바르게 표시됩니다. 이제는 다중 선택 목록에서 값을 선택할 수 있으며 텍스트 필드에 날짜를 입력 할 수 있으며 클릭 버튼을 클릭하면 막 대형 차트가 표시됩니다.

클릭 버튼을 클릭하면 다른 트랜잭션도 호출됩니다. 또한이 트랜잭션의 속성으로 executeBean을 가지고 있습니다.이 액션의 execute 메소드에서 getter를 사용하여 transactionbean에 액세스하려고하지만 NullPointerException을 제공합니다. bean이 바인딩 된 필드를 가진 페이지를 제출하면 action을 호출 할 때 bean이 자동으로 인터셉터를 통해 인스턴스화되지만 뭔가 잘못된 것처럼 보입니다.

index.jsp를

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 

     <title>Hello World</title> 
    </head> 
    <body> 
    <s:form action="displayAction.action"> 
     <h1>Hello World</h1> 
     <a href="<s:url action="displayAction.action"/>">Transaction Chart</a> 
    </s:form> 
</body> 
</html> 

DisplayAction.java

package com.tutorialspoint.struts2; 

import java.util.ArrayList; 
import java.util.List; 
import com.opensymphony.xwork2.ActionSupport; 

public class DisplayAction extends ActionSupport { 

    TransactionBean transactionBean; 

    public TransactionBean getTransactionBean() { 
     return transactionBean; 
    } 

    public void setTransactionBean(TransactionBean transactionBean) { 
     this.transactionBean = transactionBean; 
    } 

    public String execute() { 
     return SUCCESS; 
    } 

    public DisplayAction() { 
     System.out.println("Inside Constructor"); 
     List<String> leftChannelsList = new ArrayList<String>(); 
     leftChannelsList.add("Channel1"); 
     leftChannelsList.add("Channel2"); 
       //TransactionBean transactionBean = new TransactionBean(); 

     setTransactionBean(new TransactionBean()); 
     getTransactionBean().setLeftChannelsList(leftChannelsList); 

     //Transaction Type Dta 
     List<String> leftTransTypesList = new ArrayList<String>(); 
     leftTransTypesList.add("TransType1"); 
     leftTransTypesList.add("TransType2"); 
     getTransactionBean().setLeftTransTypesList(leftTransTypesList); 

    } 
} 

transactionData.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <s:head theme="ajax" debug="true"/> 
     <title>Hello World</title> 
    </head> 
<body bgcolor="grey"> 

<s:form action="displayChart.action"> 

    <s:datetimepicker label="Select From" name="transactionBean.fromDate" displayFormat="MM-dd-yy" required="true" /> <s:datetimepicker label="Select To" name="transactionBean.toDate" displayFormat="MM-dd-yy" required="true" /> 

    <s:optiontransferselect 
     label="Channels" 
     name="transactionBean.leftChannels" 
     leftTitle="Unselected Channels" 
     rightTitle="Selected Channels" 
     list="transactionBean.leftChannelsList" 
     multiple="true" 
     headerKey="-1" 
     doubleList="transactionBean.rightChannelsList" 
     doubleName="transactionBean.rightChannels" 
     doubleHeaderKey="-1" 
     doubleHeaderValue="Please Select"/> 

    <!-- Transaction Types --> 

    <s:optiontransferselect 

     label="transaction Types" 
     name="transactionBean.leftTransTypes" 
     leftTitle="Unselected Transaction Type" 
     rightTitle="Selected Transaction Type" 
     list="transactionBean.leftTransTypesList" 
     multiple="true" 
     headerKey="-1" 
     doubleList="transactionBean.rightTransTypesList" 
     doubleName="transactionBean.rightTransTypes" 
     doubleHeaderKey="-1" 
     doubleHeaderValue="Please Select"/> 

    <s:submit value="click" align="center"/> 
</s:form> 
</body> 
</html> 

JfreeChartAction.java

public class JfreeChartAction extends ActionSupport { 

    private JFreeChart chart; 

    private TransactionBean transactionBean; 
    private TransactionDao transactionDao; 

    public TransactionDao getTransactionDao() { 
     return transactionDao; 
    } 

    public void setTransactionDao(TransactionDao transactionDao) { 
     this.transactionDao = transactionDao; 
    } 

    public TransactionBean getTransactionBean() { 
     return transactionBean; 
    } 

    public void setTransactionBean(TransactionBean transactionBean) { 
     this.transactionBean = transactionBean; 
    } 

    // This method will get called if we specify <param name="value">chart</param> 
    public JFreeChart getChart() { 
     return chart; 
    } 

    public void setChart(JFreeChart chart) { 
     this.chart = chart; 
    } 

    public JfreeChartAction() {} 

    public String execute() throws Exception { 
     System.out.println("Inside Execute: Start"); 

     System.out.println("From date:" + getTransactionBean().getFromDate()); 
     System.out.println("From date:" + getTransactionBean().getToDate()); 
     System.out.println("leftChannelsList:" + getTransactionBean().getLeftChannelsList()); 
     System.out.println("Left Trans type List" + getTransactionBean().getLeftTransTypesList()); 

     DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); 
     dataSet.setValue(0, "01-04-2014", "Channel1"); 
     dataSet.setValue(15000, "01-04-2014", "Channel2"); 

     dataSet.setValue(9000, "01-05-2014", "Channel1"); 
     dataSet.setValue(1500, "01-05-2014", "Channel2"); 

     dataSet.setValue(10000, "01-06-2014", "Channel1"); 
     dataSet.setValue(8000, "01-06-2014", "Channel2"); 

     chart = ChartFactory.createBarChart(
       "Demo Bar Chart", //Chart title 
       "Mobile Manufacturer", //Domain axis label 
       "TRANSACTIONS", //Range axis label 
       dataSet, //Chart Data 
       PlotOrientation.VERTICAL, // orientation 
       true, // include legend? 
       true, // include tooltips? 
       false // include URLs? 
     ); 

     chart.setBorderVisible(true); 
     System.out.println("Inside Execute: End"); 

     return SUCCESS; 
    } 
} 
01 23,516,

Struts.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 

    <package name="default" namespace="/" extends="struts-default"> 
     <action name="displayAction" 
       class="com.tutorialspoint.struts2.DisplayAction" 
       method="execute"> 
      <result name="success">transactionsData.jsp</result> 
     </action> 
    </package> 

    <package name="defaultJfreeChart" namespace="/" extends="jfreechart-default"> 
     <action name="displayChart" 
       class="com.tutorialspoint.struts2.JfreeChartAction" 
       method="execute"> 

      <result name="success" type="chart"> 
       <param name="value">chart</param> 
       <param name="type">jpeg</param> 
       <param name="width">600</param> 
       <param name="height">400</param> 
      </result> 
     </action> 
    </package> 
</struts> 

TransactionBean.java

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

import org.jfree.chart.JFreeChart; 

public class TransactionBean { 

    private Date dateTime; 
    private Integer volume; 
    private String leftChannels; 
    private String rightChannels; 
    private String toDate; 
    private String fromDate; 
    private List<String> leftChannelsList; 
    private List<String> rightChannelsList; 

    //Transaction type data 
    private String leftTransTypes; 
    private List<String> leftTransTypesList; 
    private String rightTransTypes; 
    private List<String> rightTransTypesList; 



    public Date getDateTime() { 
     return dateTime; 
    } 

    public void setDateTime(Date dateTime) { 
     this.dateTime = dateTime; 
    } 

    public Integer getVolume() { 
     return volume; 
    } 

    public void setVolume(Integer volume) { 
     this.volume = volume; 
    } 

     public TransactionBean(){ 
     //System.out.println("Inside TransactionBean constructor"); 
     } 

    public String getLeftTransTypes() { 
     return leftTransTypes; 
    } 

    public void setLeftTransTypes(String leftTransTypes) { 
     this.leftTransTypes = leftTransTypes; 
    } 

    public List<String> getLeftTransTypesList() { 
     return leftTransTypesList; 
    } 

    public void setLeftTransTypesList(List<String> leftTransTypesList) { 
     this.leftTransTypesList = leftTransTypesList; 
    } 

    public String getRightTransTypes() { 
     return rightTransTypes; 
    } 

    public void setRightTransTypes(String rightTransTypes) { 
     this.rightTransTypes = rightTransTypes; 
    } 

    public List<String> getRightTransTypesList() { 
     return rightTransTypesList; 
    } 

    public void setRightTransTypesList(List<String> rightTransTypesList) { 
     this.rightTransTypesList = rightTransTypesList; 
    } 


    public String getToDate() { 
     return toDate; 
    } 

    public void setToDate(String toDate) { 
     this.toDate = toDate; 
    } 

    public String getFromDate() { 
     return fromDate; 
    } 

    public void setFromDate(String fromDate) { 
     this.fromDate = fromDate; 
    } 

    public String getLeftChannels() { 
     return leftChannels; 
    } 

    public void setLeftChannels(String leftChannels) { 
     this.leftChannels = leftChannels; 
    } 

    public String getRightChannels() { 
     return rightChannels; 
    } 

    public void setRightChannels(String rightChannels) { 
     this.rightChannels = rightChannels; 
    } 

    public List<String> getRightChannelsList() { 
     return rightChannelsList; 
    } 

    public void setRightChannelsList(List<String> rightChannelsList) { 

     this.rightChannelsList = rightChannelsList; 
    } 

    public List<String> getLeftChannelsList() { 
     return leftChannelsList; 
    } 

    public void setLeftChannelsList(List<String> leftChannelsList) { 

     this.leftChannelsList = leftChannelsList; 
    } 

} 
+0

빈에 대한 코드를 게시하십시오. –

+0

안녕하세요, 귀하의 회신 해 주셔서 감사합니다. 위의 코드에서 TransactionBean을 추가했습니다. – user2603985

+0

Struts의 어떤 버전을 사용하고 있습니까? –

답변

0

당신은 저를 사용해야 버전을 알려 주시기 바랍니다 수 있습니다.

항상 최신 버전을 사용하십시오. 지금은 Struts 2.3.16.3 GA입니다. Version NotesMigration Guide을 볼 수도 있습니다.

관련 문제