デモでは、このコードを見ています。この JSF では、autoCompleteView.completeQuery はパラメーターなしで呼び出されますが、このメソッドは Bean で String パラメーターを使用して定義されています。これはJSFで許可されていますか?
<p:autoComplete id="queryPojo" value="#{autoCompleteView.query}"
completeMethod="#{autoCompleteView.completeQuery}" var="query"
itemLabel="#{query.displayName}" itemValue="#{query}"
converter="queryConverter" />
豆
public List<Query> completeQuery(String query) {
List<Query> allQueries = service.getQueries();
List<Query> filteredQueries = new ArrayList<Query>();
for (int i = 0; i < allQueries.size(); i++) {
Query skin = allQueries.get(i);
if(skin.getName().toLowerCase().contains(query)) {
filteredQueries.add(skin);
}
}
return filteredQueries;
}
編集: 検索 Bean:
@Named
@RequestScoped
public class SearchController {
private String word;
// For AutoComplete suggestions
private Query selectedQuery;
@Inject
private QueryService service;
@Inject
private Word wordObject;
public void search() {
if (word != null && !word.isEmpty()) {
wordObject.searchWord(word);;
...
}else {
System.out.println("Query can't be null!");
}
}
public List<Query> completeQuery(String query) {
List<Query> allQueries = service.getQueries();
List<Query> filteredQueries = new ArrayList<Query>();
for (int i = 0; i < allQueries.size(); i++) {
Query skin = allQueries.get(i);
if(skin.getName().toLowerCase().contains(query)) {
filteredQueries.add(skin);
}
}
return filteredQueries;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public Query getSelectedQuery() {
return selectedQuery;
}
public void setSelectedQuery(Query selectedQuery) {
this.selectedQuery = selectedQuery;
}
}
JSF ビュー:
<h:form>
<p:growl id="msgs" showDetail="true" />
<h:panelGrid columns="2" cellpadding="5">
<p:autoComplete id="wordForm" value="#{searchController.query}"
completeMethod="#{searchController.completeQuery}" var="query"
itemLabel="#{query.displayName}" itemValue="#{query}"
converter="queryConverter" forceSelection="true" />
<p:commandButton value="search" oncomplete="PF('dlg').show()" **action="#{searchController.search}"** />
</h:panelGrid>
</h:form>
私は p:AutoComplete フォームを持っているので、この通常の inputtext フォームはまだ必要ですか?
<h:inputText id="word" "
value="#{searchController.word}" />
<h:message for="word" />
<h:commandButton id="search" value="search"
action="#{searchController.search}" />
</h:panelGrid>
</h:form>