Hallo Ihr!
Wie kann ich eine Bean-Property mit Parameter aufrufen bzw. an die Bean einen Parameter übergeben und das Ergebnis anzeigen?
Es geht letztlich darum, dass ich in einer JSF den Inhalt eines bestimmten Datensatzes der Datenbank anzeigen möchte. Leider schaffe ich es aber nicht, die Id den Satzes an die Bean zu übergeben. Ich habe auf Basis von diesem
Beispiel
folgendes programmiet. Vielleicht geht es auch einfacher. Wäre für jeden Tipp dankbar.
Der System.out gibt bei setId() übrigens null aus. Also kommt der Parameter irgendwie nicht in der Methode an.
Titus
Wie kann ich eine Bean-Property mit Parameter aufrufen bzw. an die Bean einen Parameter übergeben und das Ergebnis anzeigen?
Es geht letztlich darum, dass ich in einer JSF den Inhalt eines bestimmten Datensatzes der Datenbank anzeigen möchte. Leider schaffe ich es aber nicht, die Id den Satzes an die Bean zu übergeben. Ich habe auf Basis von diesem
Beispiel
folgendes programmiet. Vielleicht geht es auch einfacher. Wäre für jeden Tipp dankbar.
Code:
<h:outputText value="#{ingredientBean.ingredient.price}€">
<f:param name="paramName" value="1"/>
</h:outputText>
Code:
<managed-bean>
<description>Dao</description>
<managed-bean-name>ingredientBean</managed-bean-name>
<managed-bean-class>com.cbw.pizza.IngredientBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>
id</property-name>
<property-class>
java.lang.String</property-class>
<value>
#{param.paramName}</value>
</managed-property>
</managed-bean>
Code:
public class IngredientBean {
private Ingredient ingredient;
private String id;
public IngredientBean() {
FacesContext fc = FacesContext.getCurrentInstance();
Map requestParams = fc.getExternalContext().getRequestParameterMap();
setId((String) requestParams.get("tid"));
}
private IngredientDaoInt getDao() {
try {
InitialContext ctx = new InitialContext();
return (IngredientDaoInt) ctx.lookup("IngredientDao/local");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("couldn't lookup Dao", e);
}
}
public String persist() {
getDao().persist(ingredient);
return "persisted";
}
public DataModel getIngredients() {
return (new ListDataModel(getDao().findIngredients()));
}
public Ingredient getIngredient(String id) {
setId(id);
return ingredient;
}
public Ingredient getIngredient() {
return ingredient;
}
public void setIngredient(Ingredient ingredient) {
this.ingredient = ingredient;
}
public String delete() {
getDao().delete(ingredient);
return "removed";
}
public String update() {
getDao().update(ingredient);
return "updated";
}
public String getId() {
return id;
}
public void setId(String id) {
System.out.println("setId:" + id);
this.id = id;
if (id != null) {
ingredient = getDao().findIngredient(id);
} else {
ingredient = new Ingredient();
}
}
}
Der System.out gibt bei setId() übrigens null aus. Also kommt der Parameter irgendwie nicht in der Methode an.
Titus