richfaces suggestionBox将附加值传递给辅助bean

时间:2009-05-24 05:44:32

标签: java jsf richfaces

使用RichFaces suggestionBox时,如何将带有文本输入的页面中的多个id或值传递给suggestionBox辅助bean。即:显示选定州内的建议城市列表?这是我的autoComplete方法。

public List< Suburb > autocomplete(Object suggest)
{
    String pref = (String) suggest;
    ArrayList< Suburb > result = new ArrayList< Suburb >();

    Iterator< Suburb > iterator = getSuburbs().iterator();
    while( iterator.hasNext() )
    {
        Suburb elem = ((Suburb) iterator.next());
        if( (elem.getName() != null && elem.getName().toLowerCase().indexOf( pref.toLowerCase() ) == 0) || "".equals( pref ) )
        {
            result.add( elem );
        }
    }
    return result;
}

正如您所看到的,页面传递了一个值,Object建议,h:inputText的文字(在faceLets m:textFormRow中)

<m:textFormRow id="suburb" label="#{msgs.suburbPrompt}" 
    property="#{bean[dto].addressDTO.suburb}"
    required="true" maxlength="100" size="30" />

<rich:suggestionbox height="200" width="200" usingSuggestObjects="true"
    suggestionAction="#{suburbsMBean.autocomplete}" var="suburb" for="suburb"
    fetchValue="#{suburb.name}" id="suggestion">
    <h:column>
        <h:outputText value="#{suburb.name}" />
    </h:column>
</rich:suggestionbox>

在页面的前面,您可以选择一个州,我想用它来削减建议框显示的郊区列表。

4 个答案:

答案 0 :(得分:3)

(免责声明:我知道很久以前就问过这个问题了,但也许这会帮助有类似问题的人......)

查看此博客文章,其中涉及类似的内容: RichFaces - SuggestionBox and hidden field

关键是使用<f:setPropertyActionListener value="#{...}" target="#{...}">包裹在<a4j:support event="onselect" ajaxSingle="true">内。当SuggestionBox触发onselect时,这可用于为辅助bean设置附加值。

通过这种方法,我设法创建了一个SuggestionBox,显示(和自动填充)客户的名称,但在选择时设置了一个完整的客户对象(具有多个属性;由一个bean的id。

答案 1 :(得分:1)

<f:parameter内使用<rich:suggestionbox标记吗?

答案 2 :(得分:0)

你看过这个RichFaces的建议框demo了吗?示例下有链接来查看源。

编辑:

在用户输入suggestionBox之前,您需要在bean中使用state的值。我将使用RichFaces ajax支持将state的值传递给bean,因此当调用autocomplete方法时,用户在页面上选择的状态将填充郊区列表。

答案 3 :(得分:0)

您可以使用headerDropzone.uploadFiles([imageFile]) 中的<f:parameter标签。我的任务是根据list元素的某些属性过滤列表,有时可以忽略该属性。就像,有时我想要一份只有柑橘类水果的清单,有时我想要一整套可用的水果。

在页面中:

rich:suggestionbox

我有一个类(<rich:suggestionbox usingSuggestObjects="true" suggestionAction="#{listBuilder.autocompleteFilterFruit('')}" var="ind" for="fruitInput" fetchValue="#{fruit.name}" id="suggestion" > <f:param name="constrainInd" value="#{basket.isConstrainedToCitrus}" /> ... </rich:suggestionbox> )知道列表是否必须特殊过滤,另一个类(Basket)构建列表。

ListBuilder

Basket

在ListBuilder中:

public Boolean getIsConstrainedToCitrus ()
{
    return new Boolean ( logic that answers "is this basket for citrus only" );
}
相关问题