我正在学习带有HTML5友好标记的JSF。我想在文本字段中收到一个数字:
<form jsf:id="form_item">
<label for="nombre">Nombre:</label><input type="text" jsf:id="nombre" value="#{backend.item.nombre}"/>
<label for="edad">Edad:</label> <input type="text" jsf:id="edad" value="#{backend.item.edad}"/>
<input type="button" jsf:action="#{backend.addItem}" value="Agregar"/>;
</form>
后端bean:
@Named(value = "backend")
@ViewScoped
public class Backend implements Serializable{
private Item item;
private List<Item> items;
/**
* Creates a new instance of Backend
*/
public Backend() {
this.items = new ArrayList<>();
this.item = new Item();
}
public void addItem(){
this.getItems().add(item);
}
//Setters and getters
项目bean: 公共类项目{
private String nombre;
private Integer edad;
public Item(){
this.nombre="";
this.edad=0;
}
//Setters and getters
此代码导致 java.lang.Integer无法强制转换为java.lang.String。
用h替换输入文本:inputText有效:
<h:inputText id="edad" value="#{backend.item.edad}"/>
在这种情况下,我是否必须放弃HTML5友好标记?
此应用已在GF4 Full profile中运行。
答案 0 :(得分:0)
我终于能够使用
完成这项工作了<input type="text" jsf:id="edad" jsf:value="#{backend.item.edad}"/>
通过在value属性之前添加jsf:,一切都按预期工作。 JEE7教程在8.9.1 Using Pass-through Elements中说&#34;使用http://xmlns.jcp.org/jsf命名空间&#34;指定其至少一个属性,示例显示没有命名空间的value属性。但似乎这只有在bean属性为String时才有效。
答案 1 :(得分:0)
每当你想让你的属性成为“JSF-ish”时,你需要在它前面添加JSF命名空间。我很高兴你找到了答案!
版