我正在使用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,但无法解决问题。
任何想法???
答案 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。
试一试,看看它是否适合你