gpt4 book ai didi

forms - Spring 形式 :options tag with enum

转载 作者:IT老高 更新时间:2023-10-28 13:48:42 37 4
gpt4 key购买 nike

我在显示具有正确值的下拉列表时遇到问题。我正在使用 <spring-form:select> , <spring-form:options><spring-form:option>标签,我只是无法让它显示正确的选项。使用以下代码,我应该只列出“选项 2”、“选项 7”和“选项 8”。

*注意 - 我不想显示所有可能的 Enum 值,但出于某种原因,Spring 似乎想要全部显示它们。它似乎完全忽略了提供给 <spring-form:options> 的列表。标记。

JSP 标签

<spring-form:select path="selectOptions">
<spring-form:option value="" label="*** Select Option ***" />
<spring-form:options path="${availableOptions}" />
</spring-form:select>

枚举

public enum SelectOptions {

// CHECKSTYLE_OFF: LineLength

/**
* Option 1.
*/
OPTION_1(1, "Option 1"),
/**
* Option 2.
*/
OPTION_2(2, "Option 2"),
/**
* Option 3.
*/
OPTION_3(3, "Option 3"),
/**
* Option 4.
*/
OPTION_4(4, "Option 4"),
/**
* Option 5.
*/
OPTION_5(5, "Option 5"),
/**
* Option 6.
*/
OPTION_6(6, "Option 6"),
/**
* Option 7.
*/
OPTION_7(7, "Option 7"),
/**
* Option 8.
*/
OPTION_8(8, "Option 8"),
/**
* Option 9.
*/
OPTION_9(9, "Option 9"),
/**
* Option 10.
*/
OPTION_10(10, "Option 10");

private int id;
private String description;

/**
* Constructor.
*
* @param id the id
* @param description the description
*/
private SelectOptions(final int id, final String description) {
this.id = id;
this.description = description;
}

/**
* Retrieves the {@link SelectOptions} associated with the passed in id.
*
* @param id the id associated with the SelectOptions
* @return the SelectOptions
*/
public static SelectOptions getInstance(final int id) {

for (final SelectOptions selectOptions : SelectOptions.values()) {
if (selectOptions.id == id) {
return selectOptions;
}
}

throw new IllegalArgumentException("SelectOptions could not be determined with id [" + id + "]");
}

/**
* Retrieves the {@link SelectOptions} associated with the passed in description.
*
* @param description the description associated with the SelectOptions
* @return the SelectOptions
*/
public static SelectOptions getInstance(final String description) {

for (final SelectOptions selectOptions : SelectOptions.values()) {
if (selectOptions.description == description) {
return selectOptions;
}
}

throw new IllegalArgumentException("SelectOptions could not be determined with description [" + description + "]");
}

/**
* Simple Getter.
*
* @return the id
*/
public int getId() {
return this.id;
}

/**
* Simple Setter.
*
* @param id the id to set
*/
public void setId(final int id) {
this.id = id;
}

/**
* Simple Getter.
*
* @return the description
*/
public String getDescription() {
return this.description;
}

/**
* Simple Setter.
*
* @param description the description to set
*/
public void setDescription(final String description) {
this.description = description;
}
}

Controller

public class SpringController implements SpringControllerInterface {

/**
* /WEB-INF/jsp/myJSP.jsp.
*/
private static final String PAGE = "/WEB-INF/jsp/myJSP.jsp";

/**
* {@inheritDoc}
*/
@Override
public ModelAndView load(final Model model) {

final ModelAndView mav = new ModelAndView(PAGE);

final List<SelectOptions> availableOptions = this.getAvailableOptions();

mav.addObject("availableOptions", availableOptions);

return mav;
}

/**
* {@inheritDoc}
*/
@Override
public ModelAndView save(final Model model) {

final ModelAndView mav = new ModelAndView(PAGE);

// TODO

return mav;
}

/**
* {@inheritDoc}
*/
@Override
public Model getModel() {
return new ModelImpl();
}

/**
* @return a list of available options
*/
public List<SelectOptions> getAvailableOptions() {

final List<SelectOptions> availableOptions = Lists.newArrayList();

availableOptions.add(SelectOptions.OPTION_1);
availableOptions.add(SelectOptions.OPTION_7);
availableOptions.add(SelectOptions.OPTION_8);

return availableOptions;
}
}

型号

public class ModelImpl implements Model {

private SelectOptions selectOptions;

/**
* Simple Getter.
*
* @return the selectOptions
*/
@Override
public SelectOptions getSelectOptions() {
return this.selectOptions;
}

/**
* Simple Setter.
*
* @param selectOptions the selectOptions to set
*/
@Override
public void setSelectOptions(final SelectOptions selectOptions) {
this.selectOptions = selectOptions;
}


}

最佳答案

如果你创建了一个 spring Controller 并且你想将一个枚举传递给你的 jsp 页面,你可以这样做:

枚举示例:

public enum Coin {

HEADS("Heads", "heads"),
TAILS("Tails", "tails");

private final String fullName;
private final String shortName;

private Coin(String fullName, String shortName) {
this.fullName = fullName;
this.shortName = shortName;
}

public String getFullName() {
return fullName;
}

public String getShortName() {
return shortName;
}

}

将此枚举传递给您的模型:

model.addObject("coins", Coin.values());

在你的 jsp 页面中使用它:

<form:select path="selection">
<form:options items="${coins}" itemValue="shortName" itemLabel="fullName" />
</form:select>

关于forms - Spring 形式 :options tag with enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073830/

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