gpt4 book ai didi

java - 将变量传递给 spring getter

转载 作者:行者123 更新时间:2023-11-30 10:58:59 25 4
gpt4 key购买 nike

场景
我的应用程序中有一组实体根据某些用户选择、不同的标签、错误和描述进行独立翻译,这些内容在 properties 文件中本地化。

所有这些实体扩展了 I18N 一个带有方法的父类(super class),现在重要的是:

public String getName(int language) {
switch(language) {
// returns the localized name of the object.
}

在 View 中,有一个保管箱,其中一些项目根据相同形式的另一种语言保管箱更改名称(请记住,它不会更改应用程序的语言!!)。但是只要我可以调用其他不带参数的 getter,如果我尝试调用 getName(language) 就像 item.name(1):

尝试
我以常规方式尝试:

<form:options items="${someI18NClass.items}" itemLabel="name(1)" itemValue="id"/> 

但显示的是 org.springframework.beans.NotReadablePropertyException :

Bean property 'name(1)' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

还有一些解决方法:

<c:forEach var="item" items="${someI18NClass.items}">
<form:option value="${item.id}"><c:out value="${item.name(1)}"/></form:option>
// ↑ OK! ↑ PNFE here!
</c:forEach>

但显示的是 javax.el.PropertyNotFoundException :

Property 'name' not found in class com.test.SomeI18NClass.

我也试过Constructor Injection但只要我不创建此保管箱项目,我就找不到使用它的方法...

问题
我知道这个 getter 违反了接受参数的 POJO 规则,所以:

问题

  • 在 Spring 中有一些方法可以将一些参数传递给方法吗?
  • 我可以对 I18N 类采取任何解决方法,使其在不接受参数但返回正确结果的情况下具有 getter

有什么想法吗?

最佳答案

如果您使用的是 EL 2.2,您可以执行 ${item.getName(1)}

关于java - 将变量传递给 spring getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050132/

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