java
  • jsp
  • struts
  • struts-1
  • 2010-09-29 6 views 0 likes 
    0

    J'ai une application héritée de Struts 1 qui utilise l'étiquette imbriquée. Puis-je injecter un paramètre dynamique dans l'étiquette imbriquée? Par exemple,Balise imbriquée Struts avec paramètres dynamiques

    <nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" /> 
    

    J'ai aussi essayé de faire:

    <nested:select disabled="${requestScope.disableSelectBox}" /> 
    

    Dans les deux exemples ci-dessus, l'attribut désactivé n'a pas été réglé correctement et il a été ignoré. Si j'impression la valeur avec ac: sur la valeur correcte de disableSelectBox est affiché:

    <c:out value="${requestScope.disableSelectBox}" /> 
    

    Un collègue a suggéré que je devrais utiliser:

    <nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" /> 
    

    Le problème est qu'il est considéré comme une mauvaise pratique utiliser des scriplets java dans une page JSP. Est-il possible d'intégrer une variable dynamique dans une balise imbriquée Struts 1? Passer à Struts 2 n'est pas une option.

    Merci!

    +0

    Je ne fais pas de Struts, donc je peux me tromper, mais si cette solution de script fonctionne, alors l'option 2 devrait en théorie fonctionner aussi bien si vous utilisez au moins JSP 2.0 (ie le web.xml est déclaré conformez-vous au moins à la version 2.4 de Servlet et vous exécutez la webapp sur un serveur compatible Servlet 2.4). – BalusC

    Répondre

    1

    Struts 1 (pour autant que je me souvienne) ne peut pas vous permettre de faire:

    <nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" /> 
    

    Comme il ne peut pas traiter les balises JSP dans l'un de leurs déclarations d'attributs, Vérifiez ce que nested:select disabled attribut requis besoins .

    Mais Struts ne supporte pas les Scriplets EL et JSP (donc votre collègue est correct). JSP Scriptlet va « rendre » la valeur de la <%=request.getAttribute("disableSelectBox"); %> et l'affecter à la <nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

    Donc (si je suppose que les valeurs renvoie un vrai ou faux,

    <nested:select disabled="${requestScope.disableSelectBox}" /> 
    

    et

    <nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" /> 
    

    sera rendu (si les résultats sont vrais)

    <nested:select disabled="true" /> 
    

    avant qu'il ne soit envoyé à Struts pour afficher le tag imbriqué (désolé d'utiliser le mot "render", vous pouvez utiliser translate si vous le souhaitez).

    Questions connexes