Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf p:自动完成-传递更多参数_Jsf_Primefaces_Autocomplete - Fatal编程技术网

Jsf p:自动完成-传递更多参数

Jsf p:自动完成-传递更多参数,jsf,primefaces,autocomplete,Jsf,Primefaces,Autocomplete,我正在将JSF2.2与PrimeFaces 5.3结合使用,并尝试使用p:autoComplete 我想我犯了一些语法错误,但我找不到它 我有这一页 <h:selectOneMenu id="countryDropdown" value="#{myController.selectedCountryId}"> <f:selectItems value="#{myController.countries}" var="co" itemValue="#{co.id}" ite

我正在将JSF2.2与PrimeFaces 5.3结合使用,并尝试使用
p:autoComplete

我想我犯了一些语法错误,但我找不到它

我有这一页

<h:selectOneMenu id="countryDropdown" value="#{myController.selectedCountryId}">
   <f:selectItems value="#{myController.countries}" var="co" itemValue="#{co.id}" itemLabel="#{msg[co.name]}"/>
</h:selectOneMenu>

<p:autoComplete 
   dropdown="true" 
   value="#{myController.selectedAutocompleteId}" 
   completeMethod="#{myController.callMyAutocompleteMethod}">
      <f:attribute name="selectedCountryId"  value="#{carCountryDropdown}" />
</p:autoComplete>
但我总是空的


您能帮助我吗?

您可以使用ajax,支持更改事件:

< p:selectOneMenu ..>
    < p:ajax event="change" listener="#{myController.subjectSelectionChanged}" />
    <!--...-->
< /p:selectOneMenu>




哪个触发了listener subjectSelectionChanged,您可以在carCountryDropdown中返回“countryDropdown”的值

为什么不在“countryDropdown”中使用ajax在自动完成方法中选择和使用bean值时设置其值?因为我将执行太多无用的请求显示多?一个?两个?好的……我不知道有多少。我不想知道这个应用程序会做多少无用的请求。最重要的是,我们可以改进这种方法。我认为尝试(几乎是尝试)使用尽可能好的方法是很重要的,因为这里的Devils提倡(强烈反对过早优化),所以每次启动autocomplete并进行处理时发送它对您的服务器来说是一个显著的减少压力的方法?是的,但如果您同意我的意见,这不是最好的解决方案,因为如果我们将“乡村下拉列表“一次使用自动完成小部件,我将创建6个不同的请求。只有当用户更改自动完成小部件时,我才能尝试以何种方式发出请求?反之亦然?如前所述,如果用户执行自动完成8次,并经常发送和处理selectOneMenu 1次,则过早优化如果用户执行自动完成8次,则应用程序无法理解哪些请求是无用的。我们可以设置某种“延迟”例如,为了避免在时间上过于接近的请求。我理解你,但不是过早的优化。但我只是想找到最好的解决办法。谢谢你的帮助。这只是与您分享(或共同寻找)一些对所有社区都有用的适当解决方案
< p:selectOneMenu ..>
    < p:ajax event="change" listener="#{myController.subjectSelectionChanged}" />
    <!--...-->
< /p:selectOneMenu>