gpt4 book ai didi

java - POJO 支持使用 omnifaces 自动完成 primefaces

转载 作者:行者123 更新时间:2023-11-30 06:20:32 24 4
gpt4 key购买 nike

我正在尝试在我的项目中使用 primefaces 自动完成组件,以避免为我尝试使用的每个列表对象编写特定的转换器 omnifaces正如 here 中所建议的那样和 here通过'BalusC',我试图以完全相同的方式复制但无法完成这项工作。如果我在这里遗漏任何内容,请查看下面的代码片段和建议?

代码的第一部分 [f:selectOneMenu] 运行良好,没有任何问题

XHTML

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<ui:composition template="WEB-INF/layout/layout.xhtml">
<ui:define name="content">
<h:form>
<h:outputText id="selected_status"
value="#{mybean.objLuStatus.strDescColVal}" />
<!-- h:selectOneMenu Working fine -->
<h:selectOneMenu id="iterator2" value="#{mybean.objLuStatus}"
converter="omnifaces.SelectItemsConverter">
<f:selectItem itemLabel="Choose item" noSelectionOption="true" />
<f:selectItems value="#{mybean.lstStatus}" var="entity"
itemLabel="#{entity.strDescColVal}" itemValue="#{entity}" />
<f:ajax render="selected_status" />
</h:selectOneMenu>
<!-- p:autoComplete is NOT Working -->
<p:autoComplete id="iterator3" value="#{mybean.objLuStatus}"
converter="omnifaces.ListConverter" dropdown="true" var="entity"
itemLabel="#{entity.strDescColVal}"
placeholder="----- Select One -----" itemValue="#{entity}"
completeMethod="#{mybean.completeList}">
<f:ajax render="selected_status" />
</p:autoComplete>
<h:commandButton value="Submit" action="#{mybean.post}" />
</h:form>
</ui:define>
</ui:composition>
</html>

托管 Bean

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.ntr.foundation.model.LuStatus;

@ManagedBean(name = "mybean")
@ViewScoped
public class MyManagedBean extends BaseManagedBean implements Serializable {

List<LuStatus> lstStatus;
LuStatus objLuStatus;

@PostConstruct
public void init() {
lstStatus = new ArrayList<LuStatus>();
lstStatus.add(new LuStatus("1", "Draft", "DraftLong"));
lstStatus.add(new LuStatus("2", "Approved", "ApprovedLong"));
}

public List<LuStatus> getLstStatus() {
return lstStatus;
}

public void setLstStatus(List<LuStatus> lstStatus) {
this.lstStatus = lstStatus;
}

public void post() {
System.out.println("returned value " + objLuStatus);
}

public LuStatus getObjLuStatus() {
return objLuStatus;
}

public void setObjLuStatus(LuStatus objLuStatus) {
this.objLuStatus = objLuStatus;
}

public List<LuStatus> completeList(String strQuery) {
return lstStatus;
}

}

但是我遇到了以下错误...

提前致谢..

Caused by: java.lang.NullPointerException
at org.omnifaces.converter.ListConverter.getAsObject(ListConverter.java:39) [omnifaces-1.7.jar:1.7]
at org.primefaces.component.autocomplete.AutoCompleteRenderer.getConvertedValue(AutoCompleteRenderer.java:600) [primefaces-4.0.jar:4.0]
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1046) [jsf-api-2.2.4.jar:2.2]
at javax.faces.component.UIInput.validate(UIInput.java:976) [jsf-api-2.2.4.jar:2.2]

最佳答案

抱歉,我忽略了一行 ListConverter 文档。我错过了向 ListConverter 提供原始列表的机会,如下所述。

<o:converter converterId="omnifaces.ListConverter" list="#{mybean.lstStatus}" />

我通过添加上面的代码行来完成这项工作。

最终的 xhtml 将如下所示..

    <p:autoComplete id="iterator3" value="#{mybean.objLuStatus}" forceSelection="true"
dropdown="true" var="entity"
itemLabel="#{entity.strDescColVal}"
placeholder="----- Select One -----" itemValue="#{entity}"
completeMethod="#{mybean.completeList}">
<f:ajax render="selected_status" />
<o:converter converterId="omnifaces.ListConverter" list="#{mybean.lstStatus}" />
</p:autoComplete>

感谢 omnifaces 团队提供如此有用的实用程序...

关于java - POJO 支持使用 omnifaces 自动完成 primefaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com