autocompleter不提交表单值

时间:2011-08-31 02:14:44

标签: jquery struts2

我正在使用struts 2和jquery插件。

我有一个jsp,我已经定义了两个元素,一个选择和一个自动完成器。 我需要过滤从之前选择的提供商中选择的产品:

 <s:form id='myForm'>
 <s:select list="providers" value="provider.id" listKey="id" name="provider.id"/>
 <sj:autocompleter 
 id="productId" 
 name="productDescription" 
 value="%{productDescription}" 
 listenTopics="providerChanged"
 href="%{url_products}"
 formIds="myForm" 
 />

问题是自动填充程序在输入时不会在sj:select中提交最新选择的值。因此,当调用url_products时,provider.id的旧值将发送到操作。

请注意,我在自动填充程序中添加了formIds,但无法解决问题。

任何想法???

2 个答案:

答案 0 :(得分:0)

我没有在JS上添加任何代码,所以我添加了一些其他可以更好地描述我已经实现的代码:

行动中的代码:

public List<Provider> getProviders() {
    return this.providerService.getAllProviders();
}

public String[] getAllProducts() {
            //provider.id has an old value when this methood is called
    List<String> productsDescriptions = new ArrayList<String>();
    if (term != null && term.length() > 0)
    {
        List<Product> products = new ArrayList<Product>();
        products = this.productService.getAllProducts();
            for (Product product : products) {
                String descriptionProduct =     product.getDescription();
                if    (StringUtils.contains(descriptionProduct.toLowerCase(), term.toLowerCase()))
                {
                        productsDescriptions.add(descriptionProduct);
                }
            }
    }
    return productsDescriptions.toArray(new String[productsDescriptions.size()]);
}

public String getProductDescription(String productDescription) {
    return this.productDescription;
}

public void setProductDescription(String productDescription) {
    this.productDescription = productDescription;
}

public String showProducts() {
    return "showProducts";
}

jsp的网址:

<s:url id="url_products" action="purchaseNavegation" method="showProducts"/>

struts.xml中:

<action name="purchaseNavigation" class="purchaseNavigationAction">
        <result name="showProducts" type="json">
            <param name="root">allProducts</param>
        </result>
    </action>

答案 1 :(得分:0)

我最近玩过sj:autocompleter并且遇到了类似的问题。我不确定这是不是我在后端搞乱了 - 我想自动完成匹配最后输入的项目:

这个,那个和某些......

我仍然希望匹配'某事',但没有覆盖'这个和那个以及'如果'某事'被选中 - 无论如何,为了达到目的,不是我的拼接和切割导致了它的错误添加的简单修复:

forceValidOption="false"

到sj:autocompleter。默认情况下,如果省略该值,则该值为true。

试一试,看看它是否适合你