Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在JSP中,表示从bean中的其他字段构建的字段_Spring_Jsp_Spring Mvc_Javabeans - Fatal编程技术网

Spring 在JSP中,表示从bean中的其他字段构建的字段

Spring 在JSP中,表示从bean中的其他字段构建的字段,spring,jsp,spring-mvc,javabeans,Spring,Jsp,Spring Mvc,Javabeans,我正在开发一个Java项目,使用SpringMVC框架和JSP作为我的视图。我想知道如何最好地表示从作为模型属性使用的bean中的属性派生的字段。在我的示例中,DisplayName字段是由一个人可能拥有的所有不同的名称字段(first、last、middle、prefix等)组成的 例如,如果我有一个Person bean,看起来像这样: public class Person { private String lastName; private String firstNa

我正在开发一个Java项目,使用SpringMVC框架和JSP作为我的视图。我想知道如何最好地表示从作为模型属性使用的bean中的属性派生的字段。在我的示例中,DisplayName字段是由一个人可能拥有的所有不同的名称字段(first、last、middle、prefix等)组成的

例如,如果我有一个Person bean,看起来像这样:

public class Person { 
    private String lastName;
    private String firstName;
    .
    .
    .
    **A bunch more name fields here
    .
    .
    .
    **All the getters and setters here
    .
    .  
    .
    public String getDisplayName() {
        //Simple example
        return this.firstName + " " + this.lastName;
    }
}
因此,如果我想让我的显示名将所有这些字段与一些逻辑结合起来,然后在JSP上显示,我应该如何构建它

我是否应该在控制器中构建一个“displayName”字符串,然后将其作为附加的模型属性传入

我应该在bean中创建一个方法来构建它(参见上面的示例),然后从JSP访问它吗?使用以下方法似乎对我有效:

${person.getDisplayName()}

处理这种模式的正确方法是什么

编辑附加信息 在我的控制器中,我将Person对象作为模型属性传递

@RequestMapping(value = "/path", method = RequestMethod.GET)
    public String getMethod(final Locale locale, final Model model, final HttpServletRequest request) {

        Person myPerson = getThePersonFromSomewhere();
        model.addAttribute("person", myPerson);

        return "the view";
    }
然后在JSP视图中,我像这样访问它

<div>
    First Name: ${person.firstName}
    Display Name: ${wondering how to do this}
</div>

名字:${person.firstName}
显示名称:${正在考虑如何执行此操作}

只要您的
Person
类中有
公共字符串getDisplayName()
方法,并且这是一种简单合理的方法,就应该可以工作。

您的问题是不明确的。首先,
${person}
单独打印还是不打印?(预计正在打印
Person#toString()
)。如果它已经没有打印任何内容,那么您需要后退一步,关注如何为视图准备模型,而不是关注模型的属性。从JSP中的Person对象访问属性(例如${Person.firstName})。编辑要描述的问题。谢谢。哦,现在我明白了。您基本上希望在单个调用中使用
${person.firstName}${person.middleName}${person.lastName}
,例如
${person.displayName}
?您有一个
公共字符串getDisplayName(){return firstName+“”+middleName+“”+lastName;}
方法,它似乎不打印任何内容?为什么不在任何地方显示有问题的方法?@Ali,是的,打字错误,谢谢,修复了。@BalusC,实际上我做错了,${person.getDisplayName()}正在为我工作。编辑问题以反映这一点(仍不知道这是否是处理此类逻辑的“最佳”方式)。
Display Name: ${person.displayName}