我有一个数据表,其中有很多 selectOneMenu 项目可用,例如,对于 10 个项目,每个项目都有一个 selectOneMenu 组合。现在,如果我单击任何组合,他们应该将值保存在数据库中,然后他们会这样做。但是在保存更改后的值后,selectOneMenu 将返回到之前的状态。我希望 selectOneMenu 保持其当前状态。此外,正在为数据表中的每个组合调用该方法。我真的想知道为什么!!过去 2 周我一直在敲我的头。任何帮助将非常感激。提前致谢。
这是我在这里的第一篇文章。这是我的 jsf 数据表:
<h:dataTable value="#{careNeedBean.controlledCareNeedsList}" var="careNeed"
id="careneed_table" binding="#{careNeedBean.dataTable}">
<h:column>
<f:facet name="header">
<h:outputText value="NeedsLevel"/>
</f:facet>
<h:selectOneMenu id="needs_level_combo" style="width:200px;font-size:9px;"
onchange="submit()"
valueChangeListener="#{careNeedBean.saveTaskAsessment}"
binding="#{careNeedBean.selectOneMenu}">
<f:selectItem itemValue="not_assessed" itemLabel="----Not assessed----"/>
<f:selectItems value="#{careNeed.humanReadableNeedsList}" />
</h:selectOneMenu>
</h:column>
Run Code Online (Sandbox Code Playgroud)
这是我的豆代码:
public String saveTaskAsessment(ValueChangeEvent event) {
//does some things
return "Success";
}
Run Code Online (Sandbox Code Playgroud) 我想动态添加Primefaces组件.我正在使用与此类似的解决方案,前面已经讨论过:
<h:form>
<h:panelGrid columns="2">
<p:dataGrid id="categoriesGrid" value="#{bean.categories}"
var="categoryBean" rowIndexVar="rowIndex">
<p:column>
<p:selectOneMenu id="categorySelect" effect="drop"
value="#{categoryBean.selectedCategory}" >
<f:selectItems value="#{categoryBean.availableCategories}"
var="category" itemLabel="#{category.name}"
itemValue="#{category}" />
</p:selectOneMenu>
</p:column>
</p:dataGrid>
<p:commandButton actionListener="#{bean.addNewCategory}"
value="Add category" update="categoriesGrid"/>
</h:panelGrid>
</h:form>
Run Code Online (Sandbox Code Playgroud)
但它有问题.在点击"添加类别"按钮后,我得到了回复示例:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response>
<error>
<error-name>
class javax.faces.component.UpdateModelException
</error-name>
<error-message>
<![CDATA[/createTutorial.xhtml @85,65 value=
"#{categoryBean.selectedCategory}":java.util.NoSuchElementException]]>
</error-message>
</error>
</partial-response>
Run Code Online (Sandbox Code Playgroud)
提前致谢
我试图让用户从JSF的下拉列表中选择一个集合的项目.这是我正在使用的代码:
<f:view>
<h:form id="insert">
<h:selectOneMenu value="#{MyBean.user}">
<f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
</h:selectOneMenu>
<h:commandButton value="Insert" action="#{AuctionBean.insertItem}"/><br>
</h:form>
</f:view>
Run Code Online (Sandbox Code Playgroud)
这是MyBean的代码:
@ManagedBean
public class MyBean{
private String user;
private Collection<User> userList;
@PostConstruct
public void init() {
this.userList = UserRepository.getInstance().findAllUsers();
}
...
public String insertItem() {
System.out.println("The selected user is " + this.user);
...
return ("successfulInsertion");
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果需要我的用户的getter和setter:
public String getUser() {
return this.user;
}
public void setUser(String user) {
this.user = user;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当它打印"所选用户是"时,没有编写user.toString(),而是userList.toString()!这就像selectOneMenu没有正确设置,但我搜索了很多.有人可以帮忙吗?谢谢,AN
我在尝试制作我的selectOneMenu内容时遇到了麻烦,这取决于另一个选择的值。第一个的内容来自我的数据库中的一个表并且运行良好,但第二个应该来自另一个表,但我无法使其工作。这是我的index.html,我只是想证明这是如何工作的:
<h:outputLabel value="Estado" styleClass="requiredLbl"/>
<p:selectOneMenu id="Estado" value="#{beanInscripcion.id_estado}" valueChangeListener="#{beanInscripcion.buscarMunicipios(event)}" >
<f:selectItem itemLabel="Elegir Estado" itemValue="" />
<f:selectItems value="#{beanInscripcion.estados}"
var="edo" itemLabel="#{edo.nombre_estado}" itemValue="#{edo.id_estado}" />
<p:ajax update="Municipio" listener="#{beanInscripcion.buscarMunicipios(event)}" />
</p:selectOneMenu>
<p:separator />
<h:outputLabel value="Municipio" styleClass="requiredLbl"/>
<p:selectOneMenu id="Municipio" value="municipio">
<f:selectItems value="#{beanInscripcion.municipios}"
var="mun" itemLabel="#{mun.nombre_municipio}" itemValue="#{mun.nombre_municipio}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
这是我的 Bean 部分,我应该在其中获取第二个菜单的内容:
@ManagedBean(name = "beanInscripcion")
@ViewScoped
public class BeanInscripcion implements Serializable {
static String strURL;
private List<Estado> estados;
private List<Municipio> municipios;
private int id_estado;
public BeanInscripcion() throws SQLException{
estados = new ArrayList<Estado>();
buscarEstados();
}
public …Run Code Online (Sandbox Code Playgroud) p:selectOneMenu添加时选择存在问题f:selectItem.
视图:
<p:selectOneMenu value="#{selectionTest.selectedName}">
<f:selectItem itemLabel="Select" noSelectionOption="true" />
<f:selectItems value="#{selectionTest.allNames}" var="varName" itemLabel="#{varName}" itemValue="#{varName}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
模型:
private List<String> allNames;
private String selectedName;
public MenuSelectionTestBean(){
allNames = new ArrayList<String>();
allNames.add("Ahmed");
allNames.add("Mohamed");
allNames.add("Ibrahim");
allNames.add("Walid");
selectedName ="Walid";
}
Run Code Online (Sandbox Code Playgroud)
结果:

应选择"Walid"项,但选择"Ibrahim".我认为PrimeFaces根据列表中的索引选择项目,而不是项目的值.
这是怎么造成的,我该如何解决?
我最近更新了Primefaces从3.4到3.4.2,现在我在一些有p:selectOneMenu组件的页面上遇到了问题.我在JavaScript控制台中看到错误说:TypeError: e.offset(...) is undefined.页面加载时会立即记录此错误.
有谁知道什么是问题?
我正在使用选择一个菜单来导航到我网站的不同部分:
<p:selectOneMenu value="#{navigator.outcome}">
<f:selectItem itemLabel="Select page..." />
<f:selectItem itemValue="page1" itemLabel="Page 1" />
<f:selectItem itemValue="page2" itemLabel="Page 2" />
<f:selectItem itemValue="page3" itemLabel="Page 3" />
<p:ajax event="change" listener="#{navigator.navigate}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
是否有更多SEO友好的方式这样做?我担心JavaScript链接不会被跟踪.
我在ap:dialog中有ap:selectOneMenu.每当我滚动页面时,下拉列表都会从p:selectOneMenu标签中分离,并根据鼠标滚动进行移动.有没有办法将它附加到标签上,以便它不会移动?
以下是具有相同问题的人发布的问题的屏幕截图.SelectOneMenu面板使用鼠标滚轮滚动
我想<f:selectItems>只在用户打开时加载列表<p:selectOneMenu>.
我试过这种方式,但不起作用:
<p:selectOneMenu id="bases" value="#{sucesoBB.suceso.base}" converter="EntitiesCachedConverter" >
<f:selectItem itemLabel="" itemValue="" />
<f:selectItems value="#{sucesoBB.bases}" var="base" itemValue="#{base}" itemLabel="#{base.id} - #{base.descripcion}" />
<p:ajax event="click" onstart="#{sucesoBB.bases == null or sucesoBB.bases.size() ==1 or sucesoBB.bases.empty()?'cargaBases();':''}" />
</p:selectOneMenu>
<p:remoteCommand name="cargaBases" update="bases" actionListener="#{sucesoBB.cargaBases}" />
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在尝试使用Primefaces 5.2 selectOneMenu来显示图像及其文件名.这就是我的xhtml目前的样子:
<h:form>
<h:panelGrid id="createPanelGrid" columns="2">
<p:outputLabel value="Service Logo:" />
<p:selectOneMenu value="#{imageBean.selectedImage}" var="l">
<f:selectItem itemLabel="Select a logo" itemValue="" />
<f:selectItems value="#{imageBean.imageList}" var="logo" itemLabel="#{logo}" itemValue="#{logo}" />
<p:column>
<p:graphicImage value="#{imageBean.imageFolder}/#{l}" style="max-width:50px;max-height:50px;" />
</p:column>
<p:column>#{l}</p:column>
</p:selectOneMenu>
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
ManagedBean(imageBean)有
public List<String> getImageList () {
List<String> imageList = new ArrayList<String>();
File[] files = absoluteImageFolder.listFiles();
for (File file : files) {
imageList.add(file.getName());
}
return imageList;
}
Run Code Online (Sandbox Code Playgroud)
和
private String selectedImage;
public String getSelectedImage() {
return selectedImage;
}
public void setSelectedImage(String selectedImage) {
this.selectedImage = selectedImage; …Run Code Online (Sandbox Code Playgroud) selectonemenu ×10
jsf ×8
primefaces ×8
jsf-2 ×5
java ×2
facelets ×1
java-ee ×1
javascript ×1
jquery ×1
lazy-loading ×1
navigation ×1
selected ×1