Announcement

Collapse
No announcement yet.

bei Fehler in Form zu verschiedenen Seiten verlinken?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • bei Fehler in Form zu verschiedenen Seiten verlinken?

    Hi Leute, weiss einer von Euch, ob es möglich ist, wenn Fehler in einer Form auftreten den Fehler auf verschiedenen Seiten auszugeben. Wir wollen es nämlich so machen:

    <action
    path="/cinemahall"
    type="de.jjds.movieticket.action.CinemahallAction"
    scope="session"
    name="dynaCinemahallForm"
    validate="true"
    parameter="method"
    input="/employees/employeecinemaofficer/cinemahalls.jsp">
    <forward name="success" path="employees/employeecinemaofficer/cinemahalls.jsp" redirect="true"/>
    <forward name="view_single_success" path="employees/employeecinemaofficer/changeCinemahall.jsp" redirect="true"/>
    <forward name="failure" path="/employees/employeecinemaofficer/addCinemahall.jsp" redirect="true"/>
    <forward name="delete_failure" path="/employees/employeecinemaofficer/cinemahalls.jsp" redirect="true"/>
    </action>

    Die verschieden Aktionen (add, change, delete,..) wollen wir in einem action-Mapping zusammenfassen und nicht für jede Aktion ein eigenes machen. Jetzt ist aber das Problem, dass er immer nur auf die eine Input-Seite zurück geht(bei Fehler in der Form) und wir brauchen verschiedene "inputs", abhängig von der Aktion.

    Kann uns jemand helfen?

  • #2
    <p>Hallo,</p>
    <p>
    Soweit ich weiß, gibt es zwischen einem <i>action-mapping</i> und dem zugehörigen <i>input</i>-Element eine 1:1 Beziehung, sodass es nicht möglich wäre, aus einer <i>Action</i> auf verschiedene <i>input</i>-Seiten zurückzuverweisen. Ich sehe hier nur zwei Alternativen:</p>
    <p>
    <ol>
    <li> Die Validierung ausschalten (<i>validate="false"</i>) und in der <i>Action</i> explizit prüfen und ggf. auf verschiedene Seiten zurückverweisen</li>
    <li> Mehrere <i>action-mappings</i> auf dieselbe <i>Action</i> (also identische Klasse im <i>type</i>-Attribut) verweisen lassen. Dann sollte es eigentlich möglich sein, auf unterschiedliche <i>input</i>-Seiten zurückzuverweisen.
    </ol>
    <p>Ich habe aber beides noch nicht ausprobiert.</p>
    <p>Gruß, Jörg</p&gt

    Comment


    • #3
      hallo,

      ich glaube was du meinst ist eine LookupDispatchAction. in dieser kann man mehrere Parameter verarbeiten, also sowas wie action=add oder change ... .

      dazu mußt du in der strutsconfig ein actionmapping definieren im sinne von:

      <action path="/display"
      type="ich.bin.eine.Klasse.die.von.LookupDispatchAc tion.Erbt"
      input="/pages/main.jsp"
      name="der Form Name"
      parameter="action">
      <forward name="add" path="/pages/add.jsp"/>
      <forward name="del" path="/pages/del.jsp"/>
      ....
      </action>

      in die Klasse Erbt (haha) kommt dann die Methode getKeyMethodMap:

      public class Erbt extends LookupDispatchAction {
      ....

      protected Map getKeyMethodMap() {

      Map map = new HashMap();

      map.put("generic.labels.NEU","add");
      map.put("generic.labels.LOESCHEN","del");
      .....
      return map;

      }//End getKeyMethodMap

      wobei der Schlüssel "generic.labels.NEU" dann halt dein button text /lable ist und der wert dann der Name der MEthode die ausgewertet/aufgerufen wird, von der du dann auf das forward aus der config weiterleiten kannst. also z.b. so:

      public ActionForward add(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception{ ....

      das ganze dann auch noch für delete change na ja und so weiter .....

      oder siehe: http://struts.apache.org/api/index.htm

      Comment


      • #4
        Hallo,

        Ev. läßt sich das mit einem wildcard-mapping machen. Im konkreten Beispiel:

        <PRE>
        &lt;action path="/cinemahall*"...
        input="cinema{1}.jsp"...&gt;
        </PRE>

        Dies erzeugt eine generische Action-Definiton. Der Pfad "http://myhost/myapp/cinemahalladd.do" würde dann z.b. automatisch eine Action-Definiton mit input="cinemaadd.jsp" erhalten.

        Wildcards gibt es ab Struts 1.2:

        http://struts.apache.org/userGuide/building_controller.html#action_mapping_wildcards

        Gruß,

        Alwi

        Comment


        • #5
          Danke vielmals, das proberieren wir mal :-

          Comment

          Working...
          X