[Struts Framework] Suche Hilfe bei Form Validierung über validation xml

tigger

Semiprofi
Thread Starter
Mitglied seit
01.02.2004
Beiträge
8.496
Hallo,

ich arbeite momentan an einem Web Projekt, bei dem Struts 1.2.9 eingesetzt wird.

Ich bin momentan schon recht weit fortgeschritten, mir fehlt aber leider noch die Validierung von Eingabefeldern. Hierzu soll die validation.xml Datei zum Einsatz kommen, um den Quellcode nicht unnötig aufzublähen.

Nachdem, was ich bei Google gefunden habe, handelt es sich bei der Form Validierung leider um eine Sache, die nie ordentlich dokumentiert wurde und ich hab leider nur halbherzige Beispiele gefunden, die ich nicht zum Laufen gebracht habe.

Ich hoffe, hier kann mir jemand sagen, woran es liegt

Ich denke, am besten sieht man es an einer zusammengedampften Version meines Projektes, der eigentliche Quellcode innerhalb der Funktionen tut hier nichts zur Sache, da der soweit funktioniert ;)

Also fangen wir mal an

Es handelt sich um ein Dynamic Web Project, erstellt mit der Entwicklungsumgebung Eclipse 3.2

im Ordner src hab ich folgende Actions

LoginAction.java

RK_DRA_Action.java

als wichtigste Funktionen wohl view und unspecified, der Rest sind eigene Actions und weichen mit dem Namen auch Standards wie execute ab, es sind also nur view und unspecified, die aus der DispatchAction vorgegeben werden

Code:
public class RK_DRA_Action extends DispatchAction {

public ActionForward view (ActionMapping mapping, ActionForm form, 
            				  HttpServletRequest request, 
            				  HttpServletResponse response) throws
                                          IOException, ServletException {

  ...

  return (mapping.findForward("success"));
}

public ActionForward unspecified(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, 
            HttpServletResponse response) throws IOException, ServletException {

  ...

  return this.view(mapping, form, request, response);
}

Als Form Klasse zum Aufnehmen der Variablen aus meiner jsp gibt es folgende Klasse (vereinfacht auf 1 Feld)

RK_DRA_Form.java

Code:
public class RK_DRA_Form extends ValidationForm {

  private String testfeld = "";

  public ActionErrors validate( ActionMapping mapping, HttpServletRequest
                                        request){
    
  ActionErrors result = super.validate(mapping, request);
    
  return result;
  }
}

das sollte soweit als Infos zu dem src Ordner reichen ;)

Weiter geht es in public_html, wo die jsp zur Anzeige liegen bzw. in WEB-INF unter anderem noch die struts-config.xml, die validation.xml und die validation-rules.xml

fangen wir mit der jsp an

RK_Dienstreise.jsp

Code:
<html>
<head><title>test</title></head>
<body>
<html:form action="RK_DRA_Action.do" method="post">
<html:text property="testfeld" />
<html:errors property="error.testfeld" />
<html:submit>klick</html:submit>
</html:form>

error.testfeld ist in den ApplicationRessources.Properties definiert und soll ausgegeben werden, wenn ein Fehler auftritt

und nun im Ordner WEB-INF:

struts-config.xml

Code:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <form-beans>
	<form-bean name="RK_DRA_Form" type="RK_DRA_Form"/>
  </form-beans>
  <action-mappings>
    <action path="/DemoLogin" type="DemoLoginAction">
      <forward name="success" path="/LoginAction.do"/>
    </action>
	<action name="RK_DRA_Form" path="/RK_DRA_Action" type="RK_DRA_Action" parameter="action" unknown="false">
      <forward name="success" path="/RK_Dienstreise.jsp"/>
    </action>
    <action path="/LoginAction" type="LoginAction">
      <forward name="dozent" path="/RK_DRA_Action.do"/>
    </action>
  </action-mappings>
  <message-resources parameter="ApplicationResources"/>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
                <set-property property="pathnames"
                  value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
        </plug-in>
</struts-config>

Das Plugin in der Struts Config soll ja die Validierung im Projekt ermöglichen.

Nun noch die validation.xml

Code:
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
  <formset>
    <form name="RK_DRA_Form">
      <field property="testfeld" depends="required">
        <arg0 key="testfeld" resource="false"/>
      </field>
    </form>
  </formset>
</form-validation>

Die validation-rules.xml sollte ja Standard sein, die füg ich nicht hier ein ;)

Die Standard Error Message aus der validation-rules.xml stehen auch in den ApplicationRessources.properties

Wenn ich mein Projekt nun starte, funktioniert meine erste Seite mit der DemoLogin Action noch und wenn das Ausführen der view der RK_DRA_Action folgen sollte, kommt eine Fehlermeldung, dass die dazugehörige Action RK_DRA_Action nicht gefunden wurde.

Sobald ich die Validierung wieder rausnehme, geht alles prima

Das ganze läuft über einen lokalen Tomcat Server und geht soweit auch ganz gut ab, nur die Validierung bereitet mir noch Kopfschmerzen :p

Ich hoffe, jemand kann aus der Ferne was damit anfangen :angel:
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh