小编Sim*_*ger的帖子

将参数传递给p:autoComplete的completeMethod

我在p:autoComplete我的项目的搜索表单中使用PrimeFaces 小部件.用户可以选择他想要包含多少和哪些表单元素(搜索参数),因此我需要completeMethod为每个元素传递一个ID .我已经尝试添加onfocus=".."将对象传递给bean,但只有在首次加载元素时才会激活它.

我的问题:如何将属性传递给completeMethod

元素的XHTML(简单):

<p:autoComplete value="#{filter.value}" label="dynamic search attribute"
                completeMethod="#{myBean.complete}" />
Run Code Online (Sandbox Code Playgroud)

豆(简单):

@Named("myBean")
public class MyController implements Serializable {

    public List<String> complete(String query) {
        List<String> results = new ArrayList<String>();
        // ... code
        return results;
    }
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这似乎是完美的解决方案:

<p:autoComplete value="#{filter.value}" label="dynamic search attribute"
                completeMethod="#{myBean.complete(filter)}" />
Run Code Online (Sandbox Code Playgroud)

又来了豆子:

@Named("myBean")
public class MyController implements Serializable {

    public List<String> complete(String query, FilterObject o) {
        List<String> results = new ArrayList<String>();
        // ... database query based on FilterObject …
Run Code Online (Sandbox Code Playgroud)

autocomplete primefaces jsf-2

16
推荐指数
1
解决办法
1万
查看次数

JSF 2.0 - selectOneMenu在空时默认为0

对于我的项目,我想用h:selectOneMenu实现一个组合框.我读了很多关于如何正确处理selectOneMenu以及如何实现自定义转换器的帖子.组合框应存储来自不同数据库表(名为fk_ID)的ID(),其中约束已到位.到目前为止,一切似乎都按计划运作.现在我的问题:

列fk_ID是可选的,因此组合框中的第一个选项是f:selectItem,没有标记为"choose ..."的值.当我保存表单并更改值时,一切正常,除非我将其设置为"选择...".我得到的错误是约束完整性违规.

我也发现了问题:转换器按预期返回null,但bean接收Long 0.

XHTML:

<h:selectOneMenu value="#{userBean.selectedModel.fk_id}"
    id="combobox">
    <f:selectItem itemLabel="choose ..." />
    <f:selectItems
        value="#{userBean.items}"
        var="item"
        itemLabel="#{item.value}"
        itemValue="#{item.id}"
    />
    <f:converter converterId="userConverter" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

自定义转换器:

@FacesConverter(value = "userConverter")
public class UserConverter implements Converter {
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        if (arg2 != null && !arg2.equals("null"))
            return Long.valueOf(arg2);

        return null;
    }
    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return String.valueOf(arg2);
    }
} …
Run Code Online (Sandbox Code Playgroud)

converter selectonemenu java-ee-6 jsf-2 drop-down-menu

2
推荐指数
1
解决办法
5262
查看次数