0
我需要一些幫助。我在JSF上使用f:setPropertyActionListener
時遇到問題。問題是JSF沒有在目標方法上設置任何值。F:setPropertyActionListener不調用方法
XHTML的部分代碼如下:
<h:form>
<fieldset style="width:100; margin-left: 350px; margin-top: 250px; position:absolute; border-style: none">
<p:dataGrid var="prod" value="#{productoController.arrProductosRelevantes}"
columns="5" rows="10" paginator="true">
<p:panel style="text-align:center">
<h:panelGrid columns="1" style="width:100%" columnClasses="colStyle1" rowClasses="rowStyle1" >
<p:graphicImage value="#{prod.imagenUrl}" style="width:100px; height:100px"/>
<h:outputText value="#{prod.marca}" style="width:40px"/>
<p:commandLink value="Ver" action="#{productoController.visualizarProducto()}">
<f:setPropertyActionListener value="#{prod}"
target="#{productoController.productoSeleccionado()}" />
</p:commandLink>
</h:panelGrid>
</p:panel>
</p:dataGrid>
</fieldset>
</h:form>
的支持bean是以下(最相關的):
public Producto getProductoSeleccionado() {
return productoSeleccionado;
}
public void setProductoSeleccionado(Producto productoSeleccionado) {
if (productoSeleccionado != null) {
this.productoSeleccionado = productoSeleccionado;
arrComentarios = null;
arrProductosComplementarios = null;
arrProductosSuplementarios = null;
}
}
public String visualizarProducto() {
if (arrComentarios == null) {
obtenerComentarios();
}
if (arrProductosComplementarios == null) {
obtenerArrProductosComplementarios();
}
if (arrProductosSuplementarios == null) {
obtenerArrProductosSuplementarios();
}
return "visualizarProducto.xhtml?faces-redirect=true";
}
public ArrayList<Producto> getArrProductosRelevantes() {
return arrProductosRelevantes;
}
public void obtenerArrProductosRelevantes() {
clienteDAO = new ClienteDAO();
productoDAO = new ProductoDAO();
cliente = clienteDAO.getClientePorId(Sesion.IDCLIENTE);
arrProductosRelevantes = productoDAO.obtenerProductoRelevantesPorCliente(cliente);
}
順便說一句,我使用@SessionScoped。
任何幫助將不勝感激,謝謝。
其實有一個名爲setProductoSeleccionado(),因爲我已經在backbean代碼前面所示方法即使脫掉了括號 –
而且它不會設置產品,我已經通過其他JSF頁面使用了該方法,但是在這個頁面中它只是不起作用 –
我知道setter在那裏,但你不是指它,而是指'productoSeleccionado()'方法。現在,當你取消括號時,那麼二傳手是真正被引用的,爲什麼它現在不工作,這可能是另一回事。你的豆的範圍是什麼? – elias