Hello,
 See if this helps you.
 I have a form with remote DIV which displays chart after user clicks on
submit.
Trick here is to generate chart object, store it in session and display it
in separate JSP.   Remove the form part if you want to display just the
dynamic-DIV using Chart image.

Form.jsp [
        <s:form>
            <s:url id="display_chart" value="DrawChart_draw.action"
namespace="/user" />

            <s:submit value="Draw chart" href="%{display_chart}"
theme="ajax" targets="*chart_div*"  />
            <br />
         </s:form>

    <h4>Your Running Chart</h4>
        <div id="*chart_div*">
        </div>    <!-- End display chart -->
    </div>

]


display_chart.jsp [
<body>

     <img  src="/MyApp/user/DrawChart_display.action" alt="No Chart Image"
/>
</body>

]


struts.xml[
           <package name="user"  extends
="struts-default,jfreechart-default">
            <!--  Separate method to draw and  display due to Remote
DIV/Button tag contsraints.
             -->
            <action name="DrawChart_input" method="input"
class=".xxx.DrawChart">
                    <result name="input">form.jsp </result>
            </action>

            <action name="DrawChart_draw" method="draw"
class="xxx..DrawChart">
                    <result name="success">/jsp/display_chart.jsp </result>
            </action>
            <action name="DrawChart_display" method="display"
class="xxx.DrawChart">
                    <result name="success" type="chart">
                        <param name="width">400</param>
                        <param name="height">300</param>
                     </result>
            </action>

           </package>
]


DrawChart.java [
     JFreeChart chart;
    public String draw() throws Exception {
                 //chart creation logic.
              //generate chart object
              chart = ....
             session = ....
             session.put("CHART", chart);
            return success;
    }

    /**
     * returns chart obejct from the session.
       This methos is used by display_chart.jsp
    */
    public String display() throws Exception {
        session = ...get session ...
        this.chart = (JFreeChart) session.get("CHART");
        if(chart == null) {
            addActionError(getText("error.nochart"));
            return ERROR;
        }
        return SUCCESS;
    }

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

    /**
     * <p> input action
     */
    public String input() throws Exception {
        return INPUT;
    }

]



Leena

Reply via email to