J'utilise Struts2
Je reçois une erreur car aucun résultat n'est défini pour l'entrée d'action
<action name="update" method="updatePhase" class="Project">
<result name="updated">/Project.jsp</result>
</action>
Mon action ne passe pas à ma classe Java.
Quelqu'un peut-il m'aider?
Le message d'erreur signifie qu'un résultat nommé input
n'a pas été défini pour votre action. Le résultat input
est un résultat par défaut renvoyé par Struts en cas de problème de validation des paramètres transmis à une action. Ainsi, je vous recommande de vérifiez et assurez-vous que les paramètres que vous transmettez à partir de votre formulaire HTML correspondent à ceux de votre action. Vérifiez l'orthographe, les types de données, etc.
J'ai eu la même erreur et j'ai changé mon fichier struts.xml
from
<action name="Registeration101" class="Registeration101">
<result name="success">pages/inputform.jsp</result>
<result name="done">pages/quoteSuccess.jsp</result>
</action>
to
<action name="Registeration101" class="Registeration101">
<result name="success">pages/inputform.jsp</result>
<result name="input">pages/inputform.jsp</result>
<result name="done">pages/quoteSuccess.jsp</result>
</action>
fondamentalement, le nom du résultat = "entrée" n'a pas été défini
Supposons que vous veniez de x.jsp.
Parfois, lorsque vous insérez une annotation de validation dans votre classe de bean, vous l'utilisez dans votre action et ne fournissez pas X.jsp, une exception est levée.
Si vous ne souhaitez pas valider l'entrée, supprimez simplement l'annotation de validation de la classe de bean.
Réponse simple - se produit lorsque vous fournissez une mauvaise entrée. Par exemple, si vous avez un champ nommé "firstName" qui est de type char et si vous fournissez une entrée incorrecte (comme int)
Le cas le plus fréquent est la présence du plugin convention. Recherchez ce qui contient une "convention" et supprimez-le. Une description plus détaillée suivra bientôt.
Une solution consiste à spécifier un résultat avec le nom "input" pour l'action. Voici comment j'ai résolu mon problème via l'annotation.
Avant:
@Action(value = "sendFeedback", results = {
@Result(name = SUCCESS,type = "json"),
@Result(name = ERROR,type = "json")})
Après:
@Action(value = "sendFeedback", results = {
@Result(name = SUCCESS,type = "json"),
@Result(name = INPUT, type = "json"),
@Result(name = ERROR,type = "json")})
<action name="update" method="updatePhase" class="Project">
<result name="updated">/Project.jsp</result>
<result name="input">/Project.jsp</result> <!-- add input return type as well in your struts.xml -->
</action>
En règle générale, votre execute ()/updatePhase () dans le contrôleur renvoie mis à jour si tout se passe bien . Mais il existe d'autres types de retour que struts prendra en charge.
Vous pouvez le gérer manuellement en défiant vos valeurs de retour et les valeurs correspondantes.
<result name="yourReturnValue">/Project.jsp</result>
À l'intérieur de la balise correspondante.
J'espère que c'est clair maintenant.
Si vous avez remplacé la méthode validate dans votre fichier de classe (class = "projet" dans votre cas), les valeurs d'entrée nécessaires que vous utilisez dans la méthode validate sont utilisées. validations dans la méthode validate.