gpt4 book ai didi

java - 从父抽象类调用 getter 方法

转载 作者:行者123 更新时间:2023-11-30 04:56:10 24 4
gpt4 key购买 nike

这就是我的类(class)的样子:

public abstract class BaseForm extends Z{
protected String someString;

public String getSomeString(){
return this.someString;
}

public void setSomeString(String some){
this.someString = some;
}
}
<小时/>
public abstract class AdvancedForm extends BaseForm{
protected Something selectedThing;
protected List<Something> listOfThings;

public Something getSelectedThing(){
return this.selectedThing;
}

public void setSelectedThing(Something thing){
this.selectedThing = thing;
}

public List<Something> getListOfThings(){
return this.listOfThings;
}

public void setListOfThings(List<Something> list){
this.listOfThings = list;
}
}
<小时/>
public class FinalForm extends AdvancedForm{
//Lot of stuff done here
}

所以我有一些与你上面看到的类似的东西。当我创建 JSP 并且它尝试调用 get/setListOfThings 方法时,问题就出现了。

<html:html>
...
<html:select name="FinalForm" property="selectedThing">
<html:optionsCollection name="FinalForm" property="listOfThings" label="label" value="value" />
</html:select>
...
</html:html>

我知道我在这里遗漏了一些东西(struts-config.xmltiles-def.xml存在并且是正确的),但我的观点是struts 应该调用 FinalFormsetListOfThings 方法。这应该调用 AdvancedFormsetListOfThings 方法(这是实现的方法),因为 FinalForm 正在扩展 AdvancedForm > 并且我不会重写 FinalForm 中的方法。

无论如何,这不起作用,我不知道出了什么问题。它起作用的唯一方法是我重写该方法并从 AdvancedForm 显式调用 setListOfThings

public class FinalForm extends AdvancedForm{
//...
public List<Something> getListOfThings(){
return super.getListOfThings();
}
}

我想避免这种覆盖,因为创建 AdvancedForm 类的目的是删除我的大多数表单正在使用的许多功能(但不是全部,这就是原因BaseFormAdvanceForm 类的存在)。

有什么想法为什么这不起作用吗?有什么想法可以改进这个吗?任何人都可以向我解释我做错了什么?提前致谢!

最佳答案

你的函数肯定会很好用。但是如果您在 struts json 中渲染结果,它将不会获得父类(super class)属性。如果是 json,则必须按以下方式定义 struts.xml

<result type="json">
<param name="ignoreHierarchy">false</param>
</result>

类似讨论:How to include parent class fields in json response using struts 2 json plugin

关于java - 从父抽象类调用 getter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476104/

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