2010-08-20 9 views
1

Je voudrais que le code suivant fonctionne, mais je n'ai aucune idée de la façon d'obtenir au bean de formulaire en dehors d'une étiquette de struts.Manipuler des données de bean de forme Struts en dehors de Struts Tags

<logic:equal name="model" property="answerType" value="TEXT"> 
<% 
    String keyval = "questionAnswer" + "(" + model.getAnswerType() + ")"; 
%> 
<html:text property="<%= keyval %>" value=""></html:text>  
</logic:equal> 

Est-il possible d'obtenir à une forme struts haricots dans une JSP afin que je puisse utiliser quelque chose de plus que les étiquettes Struts pour effectuer un certain traitement?

Désolé si c'est terriblement basique, mais peut-être la façon de le mettre est: est-il un moyen pour une page JSP d'interagir avec un bean struts formulaire sans utiliser les balises struts qui sont en forme de bean?

Répondre

4

selon la définition de la forme de champ de haricot (session, demande ou ...) dans votre fichier xml vous pouvez obtenir le de l'objet de ce champ:

exemple session:

MyFormBean m = (MyFormBean) session.getAttribute("<form bean name>"); 

vous pouvez même utiliser des balises JSP ou JSTL pour obtenir cet objet de la portée.

+0

merci. c'est en fait exactement ce que je cherchais. Je l'ai essayé et ça fonctionne parfaitement! Le mien était dans la portée de la demande btw. Je ne suis pas capable de voter moi-même, sinon je le ferais. – venky

0

Quelque chose à propos de poser une question doit déclencher un niveau plus élevé d'activité cérébrale.

Je trouve la réponse presque immédiatement et le crédit est à: accessing-struts-formbean-attributes-from-jsp

Voici mon code mis à jour qui fonctionne:

  <logic:equal name="model" property="answerType" value="TEXT"> 
       <bean:define id="qlabel" name="model" property="questionLabel" /> 
       <% 
        String keyval = "questionAnswer" + "(" + qlabel + ")"; 
       %> 
       <html:text property="<%= keyval %>" value=""></html:text>    
      </logic:equal> 
0

Il y a quatre façons d'obtenir des valeurs de ce qui suit. 1.session 2.page 3.request 4.response 5.Application

1.session Vous devez déclarer scope = session de

String name = request.getParameter ("nom d'utilisateur");

où le nom d'utilisateur provient de la page précédente de la zone de texte ou de tout ce que vous avez spécifié.

session.setAttribute ("clé", valeur); Chaîne s = session.getAttribute ("clé");

La valeur peut être obtenue jusqu'à l'expiration de la session.

+0

Cela n'a vraiment rien à voir avec ma question qui concerne les entretoises. deuxièmement, l'utilisation de la session est la solution la plus facile et la mauvaise pratique à moins qu'il y ait une forte exigence que les données soient conservées pendant toute la durée de la session. – venky