showcase rendered example else jsf-2 jstl

jsf-2 - rendered - primefaces showcase



Cómo usar if, else condiciona en jsf para mostrar la imagen (3)

En lugar de usar las etiquetas "c", también puedes hacer lo siguiente:

<h:outputLink value="Images/thumb_02.jpg" target="_blank" rendered="#{not empty user or user.userId eq 0}" /> <h:graphicImage value="Images/thumb_02.jpg" rendered="#{not empty user or user.userId eq 0}" /> <h:outputLink value="/DisplayBlobExample?userId=#{user.userId}" target="_blank" rendered="#{not empty user and user.userId neq 0}" /> <h:graphicImage value="/DisplayBlobExample?userId=#{user.userId}" rendered="#{not empty user and user.userId neq 0}"/>

Creo que es una alternativa un poco más legible a la respuesta alternativa de skuntsel y está utilizando el atributo renderizado JSF en lugar de anidar un operador ternario. Y fuera de la respuesta, ¿posiblemente quisiste poner tu imagen entre las etiquetas de anclaje para que la imagen se pueda hacer clic?

Tengo una condición en la que tengo un formulario de inscripción en el que si el ID de usuario es 0, debería mostrar la imagen ficticia y cuando edito al usuario desde cualquier actualización, verifico si el ID de usuario que no es igual a 0 muestra la imagen correspondiente al ID de usuario.

Usé JSTL dentro de la página jsf. Pero siempre trata de ir al bucle else para mostrar la imagen. La funcionalidad está funcionando bien. Lo único es que no puedo mostrar la imagen falsa cuando visito la página por primera vez. Aquí está mi código:

<c:if test="${''#{user.userId}'' == ''0''}"> <a href="Images/thumb_02.jpg" target="_blank" ></a> <img src="Images/thumb_02.jpg" /> </c:if> <c:otherwise> <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"</a> <img src="/DisplayBlobExample?userId=#{user.userId}" /> </c:otherwise>

¿Puedo usar esta etiqueta JSTL o puedo hacerlo usando jsf?


Es ilegal anidar las expresiones EL: debe incluirlas. Usar JSTL es perfectamente válido en tu situación. Corrigiendo el error, harás que el código funcione:

<c:if test="#{not empty user or user.userId eq 0}"> <a href="Images/thumb_02.jpg" target="_blank" ></a> <img src="Images/thumb_02.jpg" /> </c:if> <c:if test="#{empty user or user.userId eq 0}"> <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"></a> <img src="/DisplayBlobExample?userId=#{user.userId}" /> </c:if>

Otra solución es especificar todas las condiciones que desee dentro de un EL de un elemento. Aunque podría ser más pesado y menos legible, aquí está:

<a href="#{not empty user or user.userId eq 0 ? ''/Images/thumb_02.jpg'' : ''/DisplayBlobExample?userId=''}#{not empty user or user.userId eq 0 ? '''' : user.userId}" target="_blank"></a> <img src="#{not empty user or user.userId eq 0 ? ''/Images/thumb_02.jpg'' : ''/DisplayBlobExample?userId=''}#{not empty user or user.userId eq 0 ? '''' : user.userId}" target="_blank"></img>


Para aquellos como yo, que solo seguí el código por skuntsel y recibí un rastro de pila críptica, permítame ahorrarle algo de tiempo.

Parece c:if no puede ser seguido por c:otherwise .

La solución correcta es la siguiente:

<c:choose> <c:when test="#{some.test}"> <p>some.test is true</p> </c:when> <c:otherwise> <p>some.test is not true</p> </c:otherwise> </c:choose>

Puede agregar c:when pruebas sean necesarias.