我正在使用 Liferay 6.1 GA2 和JSF 2.0( liferay面临3.1.2-ga3 , mojarra 2.1.21 ,以及 primefaces 3.5 )。我正在尝试实现自动填充字段(多个),但它无法正常工作。没有调用backing bean中的完整方法。
但是,如果我使用带有下拉列表的单个简单自动完成字段,我的bean中的完整方法会在按钮单击时调用,并将一个空查询传递给该方法。
我的代码如下:
content.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:aui="http://liferay.com/faces/aui"
xmlns:aui-cc="http://liferay.com/faces/aui-cc"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:portlet="http://java.sun.com/portlet_2_0"
xmlns:bridge="http://portletfaces.org/bridge"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
version="2.1">
<ui:composition template="template.xhtml">
<ui:define name="content-placeholder">
<div class="tab_main_content">
<aui:layout>
<p:autoComplete id="to" name="to" value="#{myBean.to}" completeMethod="#{myBean.getUsers}" multiple="true"/>
</aui:layout>
</div>
</ui:define>
</ui:composition>
</f:view>
的template.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:aui="http://liferay.com/faces/aui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:portlet="http://java.sun.com/portlet_2_0"
xmlns:liferay-ui="http://liferay.com/faces/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
version="2.1">
<div id="msgPortletDiv" class="gray_box3">
<h:form method="post" enctype="multipart/form-data">
<!-- INSERT: For content -->
<ui:insert name="content-placeholder">
placeholder text
</ui:insert>
</h:form>
</div>
</f:view>
从支持bean(getUsers)和&#39;到&#39;的完整方法属性
private List<String> to = new ArrayList<String>();
// Autocomplete method
public List<String> getUsers(String query) {
_log.info("getUsers() method in myBean for query: " + query);
List<String> results = new ArrayList<String>();
return results;
}
//Getter and setter for 'to'
public List<String> getTo() {
return to;
}
public void setTo(List<String> to) {
this.to = to;
}
我不确定是否存在兼容性问题,或者我是否只是做错了什么。我似乎无法在网上找到任何关于主要内容的演示&#39;使用liferay自动完成。
任何帮助将不胜感激!
** 编辑:为了排除故障,我试图简化我的content.xhtml而不是使用template.xhtml,但它仍然没有触发支持bean方法。如前所述,简单的下拉版本onclick适用于此,但不适用于非下拉自动填充字段的ajax调用。
简化内容.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
version="2.1">
<h:form>
<div class="tab_main_content message-body">
<p:autoComplete id="to" name="to" value="#{myBean.to}" completeMethod="#{myBean.getUsers}" multiple="true"/>
</div>
</h:form>
</f:view>
答案 0 :(得分:0)
我认为一切都是正确的。但是你需要改变你的支持bean中的一件事。你说下拉工作正常。所以选择1个用户没问题。如果在您的支持bean #{myBean.to}
中定义为private User to
,则这适用于一个选择,因为它可以容纳1个User实例。
如果将其更改为private List<User> to
您可以在列表中保留多个用户实例。不要忘记添加getter和setter,你很高兴