Hallo,
ich möchte gerne bei meiner Anwendung die Validierung per XML einbauen. Ich habe mir dafür als Beispiel eine Seite genommen, bei der Notizen hinzugefügt werden sollen und vorerst lediglich geprüft, ob der Betreff vorhanden ist.
Die SaveNoteAction-validation.xml liegt im ressources Ordner unter dem entsprechenden Pfad wie die .java Datei.
Lösche ich die validation Datei, kann ich meine Notiz problemlos speichern, steht sie aber drin, wird die Notiz gar nicht gespeichert. Unabhängig davon, was ich für Validatoren eingebaut habe und ob etwas im Betreff Feld steht, oder nicht. Die Datei wird also vermutlich erkannt, aber wo liegt dann das Problem? Ich vermute, es hat etwas mit meinen Interceptor Stacks zutun...
Getter und Setter sind dank Lombok vorhanden.
Die Struts hab ich zur besseren Übersicht etwas gekürzt, aber hoffentlich keinen wesentlichen Teil vergessen.
Optimal wäre es, wenn man das Validieren grundsätzlich im DefaultStack (userAuthenticationStack) integrieren könnte, ich habe das zu Testzwecken jetzt getrennt. Ich habe es in einem Stack allerdings auch nicht zum Laufen bekommen.
Falls ihr noch weitere Informationen braucht, könnt ihr gerne bescheid sagen, ansonsten bedanke ich mich schonmal bei jedem, der versucht mir bei dem Problem zu helfen.
Viele Grüße
eldrior
ich möchte gerne bei meiner Anwendung die Validierung per XML einbauen. Ich habe mir dafür als Beispiel eine Seite genommen, bei der Notizen hinzugefügt werden sollen und vorerst lediglich geprüft, ob der Betreff vorhanden ist.
Die SaveNoteAction-validation.xml liegt im ressources Ordner unter dem entsprechenden Pfad wie die .java Datei.
Lösche ich die validation Datei, kann ich meine Notiz problemlos speichern, steht sie aber drin, wird die Notiz gar nicht gespeichert. Unabhängig davon, was ich für Validatoren eingebaut habe und ob etwas im Betreff Feld steht, oder nicht. Die Datei wird also vermutlich erkannt, aber wo liegt dann das Problem? Ich vermute, es hat etwas mit meinen Interceptor Stacks zutun...
HTML:
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="note.subject">
<field-validator type="required">
<message>You must enter a value for Subject!!</message>
</field-validator>
</field>
</validators>
Getter und Setter sind dank Lombok vorhanden.
Java:
import com.opensymphony.xwork2.ActionSupport;
import de.myCompany.ticketSystem.domain.ticketNote.NoteForm;
import de.myCompany.ticketSystem.service.NoteService;
import lombok.Getter;
import lombok.Setter;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
@Getter
@Setter
public class SaveNoteAction extends ActionSupport implements SessionAware
{
//region variables
private final NoteService noteService;
private NoteForm note;
private Map session;
//endregion
//region methods
public String saveNote ()
{
noteService.saveNote(note, (String) session.get("username"));
return "success";
}
//endregion
//region constructors
@Autowired
public SaveNoteAction (NoteService noteService)
{
this.noteService = noteService;
}
//endregion
}
Die Struts hab ich zur besseren Übersicht etwas gekürzt, aber hoffentlich keinen wesentlichen Teil vergessen.
Optimal wäre es, wenn man das Validieren grundsätzlich im DefaultStack (userAuthenticationStack) integrieren könnte, ich habe das zu Testzwecken jetzt getrennt. Ich habe es in einem Stack allerdings auch nicht zum Laufen bekommen.
HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!--############### USER ###############-->
<package name="user" namespace="/user" extends="tiles-default">
<interceptors>
<interceptor name="authenticationInterceptor"
class="de.myCompany.ticketSystem.interceptor.UserAuthenticationInterceptor"/>
<interceptor-stack name="userAuthenticationStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="authenticationInterceptor"/>
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<interceptor-stack name="myValidationStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="userAuthenticationStack"/>
<action name="saveNote" class="de.myCompany.ticketSystem.web.user.SaveNoteAction" method="saveNote">
<interceptor-ref name="myValidationStack"/>
<interceptor-ref name="userAuthenticationStack"/>
<result name="success" type="redirectAction">
<param name="actionName">showTicketBack</param>
<param name="namespace">/user</param>
</result>
<result name="interceptorPermissionDenied" type="tiles">permissionDeniedPage</result>
<result name="input" type="redirectAction">
<param name="actionName">newNote</param>
<param name="namespace">/user</param>
</result>
</action>
</package>
</struts>
Falls ihr noch weitere Informationen braucht, könnt ihr gerne bescheid sagen, ansonsten bedanke ich mich schonmal bei jedem, der versucht mir bei dem Problem zu helfen.
Viele Grüße
eldrior