Ho bisogno di creare un elenco di comandi sulla mia pagina, ma ho qualche problema con esso. Ho passato la lista dal mio bean tramite request.setAttribute e sembra funzionare quando ottengo i valori uno alla volta, ma quando corro attraverso un ciclo foreach, sembrano tutti nulli (e quindi generati, e avendo un valore predefinito 0, "" ecc., per quanto ne so). Qualsiasi aiuto sarebbe molto apprezzato! Nel codice aggiunto, ottengo i valori corretti quando eseguo i pulsanti all'esterno del ciclo foreach, ma non quando eseguo il ciclo stesso. L'elenco è di tipo intero e dovrebbe essere in seguito un oggetto java (eseguito nello stesso problema). usando JSF versione 2.2. Sia logtest() che getoprofile() stampano l'interestpointer.Utilizzo del ciclo foreach in JSF
mio fagiolo ha:
@ManagedBean(name="MyProfile")
@RequestScoped
E ho impostato il mio myInterestList variabile nel mio fagioli con:
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
session.setAttribute("myInterestProfileName", profileName);
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ page import="java.util.List,com.jsflogin.stringWithPointer" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<f:view>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSF Successfull login</title>
</head>
<body>
<h:form id="forloop">
<c:set var ="myTempList" value="${myInterestListYay}" scope="session"/>
<c:out value="interest list"/><p>
<h:commandButton value="#{myInterestListYay[1]}" action="#{MyProfile.logTest}">
<f:setPropertyActionListener target ="#{MyProfile.interestPointer}" value = "#{myInterestListYay[1]}"/>
</h:commandButton><p>
<ui:repeat var="orly"value="${myInterestListYay}" varstatus="status">
<c:out value="${status.index}"/><h:commandButton value="#{orly}" action="#{MyProfile.logTest}">
<f:setPropertyActionListener target ="#{MyProfile.interestPointer}" value = "#{orly}"/>
</h:commandButton><p>
</ui:repeat>
<c:forEach var="orly" items="${MyProfile.interestsAndPointers}" varStatus="status" >
<c:out value="${status.index}"/><c:out value=": "/><c:out value="${orly.stringName}"/><h:commandButton value="go to interest page" action="#{MyProfile.goToInterestProfile}">
<f:setPropertyActionListener target ="#{MyProfile.interestPointer}" value = "#{orly.pointer}"/>
</h:commandButton><p>
</c:forEach>
</h:form>
</body>
</f:view>
</html>
Usa $ {} invece di Orly # {} Orly –
ottengo questo errore durante il tentativo di compilare. "in base al TLD, il valore dell'attributo è un valore differito o un metodo differito, ma il valore specificato contiene $ -expression" – user3058296