gpt4 book ai didi

jsf - 添加链接以在 JSF/Primefaces selectonemenu 中动态插入元素

转载 作者:行者123 更新时间:2023-12-02 20:20:38 24 4
gpt4 key购买 nike

是否可以动态地将一项插入到选择的一个菜单中:

enter image description here

目前,用户必须转到另一个页面才能添加职位:

enter image description here

然后导航回第一个 View ,查看更新后的下拉菜单以及新添加的选择项。更有效的选择是允许用户在此 View 中即时插入,然后在下拉列表中选择它。

最佳答案

这可以通过提供一个虚拟选择项并在 ajax 更改监听器中显式检查它来实现。选择后,只需显示对话框。保存对话框后,保存新作业并重置虚拟选择项。

这是一个启动示例。

@Named
@ViewScoped
public class Bean implements Serializable {

private List<Activity> activities;
private List<Job> jobs;
private Job newJob;

@EJB
private YourActivityService yourActivityService;

@EJB
private YourJobService yourJobService;

@PostConstruct
public void init() {
activities = yourActivityService.list();
jobs = yourJobService.list();
newJob = new Job();
}

public void addNewJobIfNecessary(AjaxBehaviorEvent event) {
if (newJob.equals(((UIInput) event.getComponent()).getValue())) {
RequestContext ajax = RequestContext.getCurrentInstance();
ajax.update("addNewJobDialog");
ajax.execute("PF('widget_addNewJobDialog').show()");
}
}

public void saveNewJob() {
yourJobService.save(newJob);
jobs.add(newJob);
newJob = new Job();

RequestContext ajax = RequestContext.getCurrentInstance();
ajax.update("activitiesForm");
ajax.execute("PF('widget_addNewJobDialog').hide()");
}

// ...
}

<h:form id="activitiesForm">
<p:dataTable value="#{bean.activities}" var="activity">
<p:column>#{activity.id}</p:column>
<p:column>
<p:selectOneMenu value="#{activity.job}" converter="omnifaces.SelectItemsConverter">
<f:selectItem itemValue="#{null}" itemLabel="Select one" />
<f:selectItems value="#{bean.jobs}" />
<f:selectItem itemValue="#{bean.newJob}" itemLabel="Add new Job" />
<p:ajax listener="#{bean.addNewJobIfNecessary}" />
</p:selectOneMenu>
</p:column>
</p:dataTable>
</h:form>

<p:dialog id="addNewJobDialog">
<h:form>
<p:inputText value="#{bean.newJob.name}" required="true" />
<p:commandButton value="Add" action="#{bean.saveNewJob}" update="@form" />
<p:messages />
</h:form>
</p:dialog>

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

关于jsf - 添加链接以在 JSF/Primefaces selectonemenu 中动态插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32483434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com