objetos metodos llenar listas imprimir enteros como clase jsf arraylist

jsf - metodos - listas en java



Se agregó String a ArrayList no se muestra/no se actualiza (1)

Lo arreglé, finalmente!

Gracias a User @Kukeltje, que me insinuó las cosas básicas de que me equivoqué, y User @Wietlol que me motivó en el chat a través del apoyo moral y ''cree en mí'' :)

La solución:

..en Application.java:

public List<Feed> sentNotifications = new ArrayList<>(); public List<String> emails = new ArrayList<>(); public List<String> words = new LinkedList<>(Arrays.asList("vuln", "banana", "pizza", "bonanza")); public List<String> feeds = new LinkedList<>( Arrays.asList("http://www.kb.cert.org/vulfeed", "https://ics-cert.us-cert.gov/advisories/advisories.xml", "https://ics-cert.us-cert.gov/alerts/alerts.xml") ); private String currentEmail; private String currentFeed; private String currentWord;

[...]

public void addEmail() { emails.add(currentEmail); }

..y gui.xhmtl:

<!-- EMAILS --> <h3>Configured Emails</h3> <h:form> <h:inputText value="#{Application.currentEmail}" var="email"/> <h:commandButton value="Add Email" action="#{Application.addEmail}"/> </h:form> <h:form> <ui:repeat var="email" value="#{Application.emails}"> <tr> <td>#{email}</td> <td> <f:facet name="header">Action</f:facet> <h:commandLink value="Delete" action="#{Application.rmEmail(email)}"/> </td> </tr> <br></br> </ui:repeat> </h:form>

Observe cómo action="#{Application.addEmail}" no utiliza argumentos, sino que el parámetro se transfiere al método mediante value="#{Application.currentEmail}" .

Si usted, lector, tiene el mismo problema, considere estos puntos:

  • getter / setter para cada campo en el frijol
  • campos primitivos!
  • métodos sin argumentos para ''delegar'' los campos primitivos, por ejemplo, mi método addEmail

Espero que esta respuesta sea útil para personas que tengan el mismo problema.

Saludos, Gewure

... Así que tengo mi @ApplicationScoped Bean "Aplicación" ..:

@ManagedBean(name = "Application") @ApplicationScoped public class Application implements Serializable { private boolean isRunning = false; private ArrayList<Feed> sentNotifications = new ArrayList<>(); private ArrayList<String> emails = new ArrayList<>( Arrays.asList("[email protected]", "[email protected]") ); private LinkedList<String> words = new LinkedList<>( Arrays.asList("vuln","banana","pizza","bonanza") ); private LinkedList<String> feeds = new LinkedList<>( Arrays.asList("http://www.kb.cert.org/vulfeed", "https://ics-cert.us-cert.gov/advisories/advisories.xml", "https://ics-cert.us-cert.gov/alerts/alerts.xml") );

... y desea agregar un Strings to ArrayList<String> emails usando el método:

public String addEmail(String email) { emails.add(email); return null; }

El Facelet es el siguiente:

<!-- EMAILS --> <h3>Configured Emails</h3> <h:form> <h:inputText value="Email" var="email"/> <h:commandButton value="Add Email" action="#{Application.addEmail(email)}"/> </h:form> <h:form> <ui:repeat var="email" value="#{Application.emails}"> <tr> <td>#{email}</td> <td> <f:facet name="header">Action</f:facet> <h:commandLink value="Delete" action="#{Application.rmEmail(email)}"/> </td> </tr> <br></br> </ui:repeat> </h:form>

... así que cuando intento agregar "[email protected]", este es el resultado:

  • Se muestra un botón de eliminación, pero no la cadena en sí misma.
  • ¿Se ha agregado correctamente la cadena y JSF no reenvía la vista ...?
  • ¿O no se ha agregado correctamente la cadena?

¡por favor ayuda! Gracias.