Jakarta ee J2EE primesfaces自动完成值检索
如何检索primefaces自动完成的选定值Jakarta ee J2EE primesfaces自动完成值检索,jakarta-ee,primefaces,autocomplete,Jakarta Ee,Primefaces,Autocomplete,如何检索primefaces自动完成的选定值 <p:autoComplete value="#{completeBean.selected1}" id="basicPojo1" completeMethod="#{completeBean.completePlayer}" var="p" itemLabel="#{p.getMateriel().getNumparc()}" itemValue="#{p}" converter="numparc" forceSelection=
<p:autoComplete value="#{completeBean.selected1}"
id="basicPojo1" completeMethod="#{completeBean.completePlayer}"
var="p" itemLabel="#{p.getMateriel().getNumparc()}" itemValue="#{p}"
converter="numparc" forceSelection="true">
<f:ajax execute="basicPojo1" listener="#{evenEdl.submitListener}" render="@all"/>
</p:autoComplete>
public void submitListener(AjaxBehaviorEvent event) {
String id = event.getComponent().getId();
switch (id) {
case "basicPojo1":
String parametre = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("basicPojo1");
System.out.println("test param"+parametre);
break;
}
}
公共无效提交者(AjaxBehaviorEvent事件){
字符串id=event.getComponent().getId();
开关(id){
案例“basicPojo1”:
字符串参数=FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get(“basicPojo1”);
系统输出打印项次(“测试参数”+参数);
打破
}
}
这里有一个p:autocomplete与实体转换器的示例:
脸:
<p:autoComplete id="autocomplete1" value="#{mBAutoComplete.selectedEntity}" completeMethod="#{mBAutoComplete.complete}"
forceSelection="true" minQueryLength="3" maxResults="10">
<p:ajax update="autocomplete1" event="itemSelect" listener="#{mBAutoComplete.updateEntity}" />
</p:autoComplete>
@FacesConverter(forClass = Entity.class,value = "entityConveter")
public class EntityConverter implements Converter {
public EntityConverter() {
}
@Override
public Entity getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
// get Entity with WebService, but you can get it with other ways :
// like calling EJB methods or using a Collection of Entity provided in
// another managed bean
return services.getWebService().getEntity(Integer.valueOf(arg2));
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
return String.valueOf(((Entity) arg2).getEntityID());
}
}
@ManagedBean(name = "mBAutoComplete")
@SessionScoped
public class MBAutoComplete {
// Entity
private Entity selectedEntity;
// Entity Autocomplete
public List<String> complete(String query) {
List<String> results = new ArrayList<String>();
for (Entity en : this.eqList) {
if (en.getEntityID().startsWith(query)) {
results.add(en.getEntityID());
}
}
return results;
}
public void updateEntity(SelectEvent e) {
// Don't forget to check null Object sent by SelectEvent
this.selectedEntity = (Entity) e.getObject();
}
// GETTERS & SETTERS
public void setSelectedEntity(Entity e) {
this.selectedEntity = e;
}
public Entity getSelectedEntity() {
return this.selectedEntity();
}
}
ManagedBean:
<p:autoComplete id="autocomplete1" value="#{mBAutoComplete.selectedEntity}" completeMethod="#{mBAutoComplete.complete}"
forceSelection="true" minQueryLength="3" maxResults="10">
<p:ajax update="autocomplete1" event="itemSelect" listener="#{mBAutoComplete.updateEntity}" />
</p:autoComplete>
@FacesConverter(forClass = Entity.class,value = "entityConveter")
public class EntityConverter implements Converter {
public EntityConverter() {
}
@Override
public Entity getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
// get Entity with WebService, but you can get it with other ways :
// like calling EJB methods or using a Collection of Entity provided in
// another managed bean
return services.getWebService().getEntity(Integer.valueOf(arg2));
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
return String.valueOf(((Entity) arg2).getEntityID());
}
}
@ManagedBean(name = "mBAutoComplete")
@SessionScoped
public class MBAutoComplete {
// Entity
private Entity selectedEntity;
// Entity Autocomplete
public List<String> complete(String query) {
List<String> results = new ArrayList<String>();
for (Entity en : this.eqList) {
if (en.getEntityID().startsWith(query)) {
results.add(en.getEntityID());
}
}
return results;
}
public void updateEntity(SelectEvent e) {
// Don't forget to check null Object sent by SelectEvent
this.selectedEntity = (Entity) e.getObject();
}
// GETTERS & SETTERS
public void setSelectedEntity(Entity e) {
this.selectedEntity = e;
}
public Entity getSelectedEntity() {
return this.selectedEntity();
}
}
@ManagedBean(name=“mbautomplete”)
@会议范围
公共类mbautomplete{
//实体
私人实体选择权;
//实体自动完成
公共列表完成(字符串查询){
列表结果=新建ArrayList();
for(实体en:this.eqList){
if(en.getEntityID().startWith(查询)){
results.add(en.getEntityID());
}
}
返回结果;
}
公共无效更新属性(选择事件e){
//不要忘记检查SelectEvent发送的空对象
this.selectedEntity=(实体)e.getObject();
}
//接球手和接球手
公共选择权(实体e){
这个。selectedEntity=e;
}
公共实体getSelectedEntity(){
返回此值。selectedEntity();
}
}
在本例中,您不需要使用FacesContext,只需使用SelectEvent和转换器
希望这有帮助 您希望从何处获取所选值?在submitListener方法中,我的侦听器工作正常,开关检索ID(框“basicPojo1”->ok)。在本文中,我希望检索autocomplete jsf的所选(字符串参数中)值以执行Bean端处理,但我没有成功地使用这个字符串参数:FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“basicPojo1”);不完全确定你想要实现什么。您需要如何处理所选的值?当您在“自动完成”中选择一个值时,它将在表单最终提交时绑定到completeBean.selected1。或者,您是否正在尝试在选择值后立即填充其他内容?My completeBean.selected1始终为空,并且我无法恢复任何内容。请查看primefaces showcase:这是您想要的吗?仔细看看p:ajax