2011-11-11 4 views
5

Je passe la valeur param dans include balise dans la page jsp comme ci-dessousstruts2 d'accès comprennent la valeur param dans une autre page jsp struts si tag

<s:include value="../../commonjspf/status.jspf"> 
     <s:param name="mystatus" value="%{status}"> 
     </s:param> 
    </s:include> 

où variable d'état viennent de la classe d'action.

Je veux accéder à cette page mystatus param dans status.jspf dans struts if tag pour comparer avec mes valeurs par défaut.

<s:if test =""> 
    </s:if> 

ou

<s:set name="" value =""/> 

une des balises ci-dessus.

comment puis-je accéder?

veuillez me suggérer.

Merci.

Répondre

4

Tous les paramètres supplémentaires fournis à la page incluse ne sont pas accessibles dans la page rendue via la balise, car aucune valeur de valeur ne sera créée. reportez-vous à la documentation de Struts2 pour plus de détails.

Struts2 Include tag

Vous pouvez toutefois y accéder dans un servlet via l'objet HttpServletRequest ou d'une page JSP via un scriptlet.something comme

${param.ParamName} 
+0

Merci c'est l'affichage mais je veux comparer cette valeur. comment puis-je comparer cette valeur? –

+0

vous devez y accéder en jsp via l'objet HttpServletRequest ou depuis une page JSP via un scriptlet. Vous devez donc accéder à ces paramètres à l'aide de la requête HTTPServlet simple, par exemple <% = request.getParameter ("type")%>. Espérons que cela vous aidera –

+0

pouvons-nous mettre $ {param.ParamName} dans n'importe quelle variable ou dans

8

Utilisez la notation ${param.ParamName} pour y accéder, comme indiqué dans la référence ci-dessous:

http://struts.apache.org/2.0.14/docs/include.html

Un exemple de code:

Page 1:

 <s:include value="testPage.jsp"> 
      <s:param name="mystatus">TestThis</s:param> 
     </s:include> 

Page 2:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<s:if test='%{#attr.mystatus == "TestThis"}'> 
    This is what we want 
</s:if> 
<s:else> 
    This is not what we want 
</s:else> 
+0

Merci c'est afficher mais je veux comparer cette valeur. comment puis-je comparer cette valeur? –

+0

S'il vous plaît voir l'exemple de code. –

+1

Merci, ça marche aussi pour moi! –

2

Je voudrais juste jeter cela en tant que une alternative à l'utilisation des entretoises comprend l'étiquette.

Vous pouvez plutôt utiliser la balise jsp:include et utiliser les entretoises s:push tag pour pousser les paramètres sur la pile et les rendre disponibles dans la page inclus, il ajoute une ou deux lignes supplémentaires dans le jsp, mais est beaucoup plus souple que vous pouvez passez des objets plutôt que des chaînes dans la JSP incluse.

La nature de l'étiquette de poussée signifie que, une fois que vous avez terminé, les paramètres sont à nouveau retirés de la pile.

primaire JSP

<s:push value="#{'someStringParam':'some string', 'someObjectParam': someObject}"> 
    <jsp:include page="../includes/user-tabs.jsp" /> 
    </s:push> 

inclus JSP

<s:property value="someStringParam" /> 

<s:if test="someObjectParam.someValue > 10"> 
    Result! 
</s:else> 
2

bâtiment de la réponse de James, cela m'a aidé sur ma page 2:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page isELIgnored="false" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<c:if test="${empty mystatus}"> 
    <c:set var="mystatus" value="default status here" /> 
</c:if> 
1

Si vous êtes passer une valeur d'un pag e à l'autre (comme ci-dessous) faites attention à la syntaxe. Vous devez placer des guillemets simples autour du texte de nom que vous transmettez, sinon c'est le nom d'une variable.

<s:include value="other.jsp"> 
    <s:param name="thevar" value="'text i want to see'" /> 
</s:include> 

Puis, dans la page « other.jsp » vous verrez le « texte que je veux voir » si vous procédez comme suit:

${param.thevar} 

Si, au lieu que vous ne placez pas les guillemets simples dans l'attribut param value, vous ne voyez rien dans la page other.jsp. Je ne le mentionne que parce que je l'ai vu beaucoup de fois.

Questions connexes