在我的pom.xml中,Am使用Java1.8、lombok和以下版本的:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.primefaces.extensions</groupId>
<artifactId>primefaces-extensions</artifactId>
<version>7.0.3</version>
</dependency>下面是我在下拉列表中使用的SportsType枚举:
public enum SportsType {
/**
* Ordinal: 0
*/
BASKETBALL,
/**
* Ordinal: 1
*/
BASEBALL,
/**
* Ordinal: 2
*/
FOOTBALL
public static SportsType getByNumber(int number) {
if (number < 0 || number >= values().length) {
return FOOTBALL;
}
return values()[number];
}
}这是我的bean/视图:
@Named
@ViewScoped
@Data
public class SportsView implements Serializable {
private SportType sportType;
public SportType[] getSportTypes() {
return SportType.values();
}
}sports.xhtml (对应的JSF文件):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
>
<head>
<title>Create new Team Form</title>
<style type="text/css">
</style>
</head>
<ui:composition>
<ui:define name="content">
<h:form id="createNewSportTeamForm">
<h:outputText value="Pick Sports Type"/>
<p:selectOneMenu
value="#{sportsView.sportTypes[2]}">
<f:selectItems
value="#{sportsView.sportTypes}"
var="sportType"
itemValue="#{sportType}"
itemLabel="#{sportType.getByNumber(sportType.ordinal())}"/>
</p:selectOneMenu>
<!--
Submit button and other UI elements intentionally omitted for brevity
-->
</h:form>
</ui:define>
</ui:composition>
</html>我要做的是让它默认为足球,在下拉列表中,但当我点击提交,它会出现为空?它是默认的足球,但它没有设置它时,我提交的表格。
需要它设置序号2(足球)时,我提交的表格(不选择任何其他体育类型).
任何帮助都是非常感谢的!
发布于 2021-05-25 09:11:36
在Bean中设置默认值
@Named
@ViewScoped
@Data
public class SportsView implements Serializable {
private SportType sportType = SportsType.FOOTBALL;
public SportType[] getSportTypes() {
return SportType.values();
}
}在sports.xhtml中,将<p:selectOneMenu value=""修复为
<h:outputText value="Pick Sports Type"/>
<p:selectOneMenu
value="#{sportsView.sportType}">#{sportsView.sportTypes[2]}将被正确地呈现为SportsType.FOOTBALL,但请记住,您没有将sportType指定为在<p:selectOneMenu/>中选择的值的容器,而当您提交表单时,sportType仍然是null。
也不要把#{sportsView.sportType}和var="sportType"混淆起来。
var只是一个用于迭代#{sportsView.sportTypes}数组的临时变量,您可以用以下方法替换它:
<f:selectItems
value="#{sportsView.sportTypes}"
var="temp"
itemValue="#{temp}"
itemLabel="#{temp.getByNumber(temp.ordinal())}"/>https://stackoverflow.com/questions/67682414
复制相似问题