# struts2 result="input"



## JRookie (25. Sep 2009)

Tach zusammen,
ich habe eine action, die als result einen success Ausgang und einen "input" Ausgang hat, der als Ergebnis eines validates() auf die Eingabemaske zurückführen soll: 

				<action name="compute" class="pack.fuzeicomp">
					<result name="SUCCESS">/jsp/zeig.jsp</result>
					<result name="input">/jsp/fuzei_entry.jsp</result>
    				</action>	

Klappt, sofern ich als "input" Ausgang eine andere jsp reinhänge. Mein Problem:
Wenn ich die Eingabemaske reinhänge, wird mir nur noch der prompt und das erste Eingabefeld  textfield "func" gezeigt

```
<%@ page contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" import="pack.functypes" %>
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
		<link rel="stylesheet" type="text/css" href="mystyle.css" / >
		
		<title>Eingabe der Funktion</title>
	</head>


	<body class="wheat">
		    <h3>Der Name der Funktion</h3> 
			<hr> 
	        <s:form action="compute">
		    <s:textfield name="func" 
		       label="Enter your function here !" size="25"/>
 <div id="e1">
            	    <s:radio  name="functype" theme="css_xhtml" cssClass="resources" cssStyle="Color:red"
               		label="Wähle einen Funktionstyp !!" labelposition="top" list="functypes" />  
</div>
  

 <div id="para"><s:textfield name="a" label="Parameter  a	" theme="xhtml"  size="6"  /><br>
		    <s:textfield name="b" label="Parameter  b	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="c" label="Parameter  c	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h1" label="Exponent h1	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h2" label="Exponent h2	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h3" label="Exponent h3	" theme="xhtml"  size="6" /><br>
</div>
<br>
           <s:submit theme="simple" value="Schick doch mal ab !" />
	</s:form>
```

Kann das sein, dass das an dem theme Wechsel liegt ??
Ich habe in der validation Routine folgendes stehen:

```
catch (NumberFormatException e){
			System.out.println ("Number Format exception in fuzeicomp " + geta() );
//			addFieldError( "a", "Keine gültige Zahl\n"+e.toString()+"\n");
			addFieldError( "a", "Keine gültige Zahl");
			System.out.println ("Komm ich soweit ??"  );
		
		}
```
Die printlines seh ich beim tomcat.
Weiss jemand was ??
Ich weiss nicht mal, wonach ich suchen soll, muss man da einen Umweg über ein forward machen ??
Viele Grüße
JRookie


----------



## JRookie (28. Sep 2009)

Dann will ich mal antworten:
Das die anderen Textfelder verschwanden, lag wohl daran, dasss ich sie private und static deklariert hatte, anstatt nur private.
Ok, ich mach jetzt mein "input" result und sehe die Felder mit ihren alten Werten und einer Fehlermeldung. Dafür ist meine radio Iteration mitsamt des submit Knopfes verschwunden.

Versteh ich sogar irgendwie. Ich hatte eine action deklariert, die die Ausführung einer Klasse übernimmt, die die Liste erst erzeugt:
fuzei.xml:

```
<action name="Name" class="pack.functypes">
           				<result name="SUCCESS">/jsp/fuzei_entry.jsp</result>
				</action>	

				<action name="compute" class="pack.fuzeicomp">
					<result name="SUCCESS">/jsp/zeig.jsp</result>
					<result name="input" >/jsp/fuzei_entry.jsp</result>
    			</action>
```
functypes.java:

```
package pack;
// import java.awt.List;
import static java.lang.Math.exp;
import static java.lang.Math.pow;

import java.util.*;
import com.opensymphony.xwork2.ActionSupport;

public class functypes extends ActionSupport {

    public String execute() throws Exception {
    	   functypes = new ArrayList();
    	   functypes.add("Apple");
    	   functypes.add("Pear");
    	   functypes.add("Orange");
    	   functypes.add("Pine Apple");

     	System.out.println ("Functypes.java  Funktionstype " + functypes);	
    	return "SUCCESS";
    }

	private   List functypes;
 
	public  List getfunctypes() {
		return functypes;
	}

}
```
Wenn ich fuzei.xml ändere:

```
<action name="Name" class="pack.functypes">
           				<result name="SUCCESS">/jsp/fuzei_entry.jsp</result>
				</action>	

				<action name="compute" class="pack.fuzeicomp">
					<result name="SUCCESS">/jsp/zeig.jsp</result>
					<result name="input" type="redirect" >/jsp/Name.action</result>
    			</action>
```
und ein redirect auf die Name.action mache, wird die Liste wieder erzeugt, dafür sind alle eingegebenen Werte weg.
Weiss jemand , wie es geht ?
Viele Grüße
JRookie


----------



## JRookie (28. Sep 2009)

Ja, ich jetzt ..
ich hänge einfach die Erzeugung meiner radio Liste in den validate() Zweig.Also

```
functypes = new ArrayList(); 
		   functypes.add("Apple");
		   functypes.add("Pear");
		   functypes.add("Orange");
		   functypes.add("Pine Apple");
```
dann geht's. Kommt mir zwar etwas komisch vor ...
Weiss den jemand, wie ich die Ausgabe des addFieldError  im jsp steuere ?
Mein fuzei_entry.jsp sieht so aus:

```
<%@ page contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
		<link rel="stylesheet" type="text/css" href="mystyle.css" / >
		
		<title>Eingabe der Funktion</title>
	</head>


	<body class="wheat">
		    <h3>Der Name der Funktion</h3> 
			<hr> 
	        <s:form action="compute" >
	        	<s:textfield name="func" 
		        	label="Enter your function here !" size="25"/><br>

 <div id="para">
            <s:textfield name="a" label="Parameter  a	" theme="xhtml"  size="6"  /><br>
		    <s:textfield name="b" label="Parameter  b	" theme="xhtml"  size="6"  /><br>
		    <s:textfield name="c" label="Parameter  c	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h1" label="Exponent h1	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h2" label="Exponent h2	" theme="xhtml"  size="6" /><br>
		    <s:textfield name="h3" label="Exponent h3	" theme="xhtml"  size="6" /><br>
</div>

<div id="e1">
            <s:radio  name="functype" theme="css_xhtml" cssClass="resources" cssStyle="Color:red"
               label="Wähle einen Funktionstyp !!" labelposition="top" list="functypes" />  
</div>


<br>
           <s:submit theme="simple" value="Schick doch mal ab !" />
	</s:form>
```
Wenn die Fehlermeldung kommt, dann VOR dem label:

Keine gültige Zahl in validate  Parameter b :  <textfeld>

Schön aussehen tut das nicht !
Viele Grüße
JRookie


----------

