首页 > 解决方案 > JSP 选择代码输出完整的 html 源代码而不是实际值

问题描述

我正在尝试创建一个应用程序来检索所有值的列表,然后将它们填充到 HTML 选择语句中。

我的DAO如下

 private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sf) {
        this.sessionFactory = sf;
    }
@SuppressWarnings("unchecked")
    @Override
    public List<ExternalApp> getExternalApps() {
        Session session = this.sessionFactory.getCurrentSession();
        List<ExternalApp> externalAppList = session.createQuery("from ExternalApp where is_active=1").list();
        return externalAppList;
    }

我的控制器像这样检索列表:

List<ExternalApp> externalAppList=this.externalAppService.getExternalApps();
model.addAttribute("externalAppList",externalAppList);
if(null!=externalAppList)
httpServletRequest.getSession().setAttribute("externalAppList", externalAppList);

我正在尝试使用以下 JSP 代码将其放入 HTML 选择中

    <div class="col">
<label for="interfacesArray[0].external_interface_id" class="col-form-label required"><spring:message code="label_interface_details_interface_with" text="Interface With" /> </label>
<form:select path="interfacesArray[0].external_interface_id" class="form-control" id ="interfacesArray[0].external_interface_id" required="required" name="vabei">
<form:options itemValue="id" itemLabel="name" items="${externalAppList}"  />
</form:select>
<form:errors path="interfacesArray[0].external_interface_id" class="error help-block" />
</div>

其中external_interface_id是类 interfaceArray 的字段名称

如果我手动打印 externalAppList 的内容,我得到了正确的值。但是上面的代码给出的输出如下:

<select id="interfacesArray[0].external_interface_id"
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="author" content="XXXXXXXXXXX">
    <meta name="description" content="Something">
    <meta name="referrer" content="same-origin" />
    <title></title>
    <!-- stylesheets -->


            <link rel="stylesheet" type="text/css" href="/ggg/static/css/bootstrap.css">

而不是所需的输出,例如:

<select id="interfacesArray[0].external_interface_id">
<option id=1>First</option>
<option id=2>Second</option>
</select>

我该如何解决?任何帮助深表感谢。

编辑

这是抛出的错误

原因:org.springframework.beans.NotReadablePropertyException:bean 类 [com.ggg.model.InterfaceForm] 的无效属性“interfacesArray[0].external_interface_id”:bean 属性“interfacesArray[0].external_interface_id”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配?

InterfaceForm 只是声明了一个 Interfaces 类的数组。External App 定义为的 Interfaces 类

@ManyToOne
    @JoinColumn(name="EXTERNAL_APP",referencedColumnName="id")
    private ExternalApp external_interface_id;

我不清楚布线(XML),我猜这可能是原因,但我不太确定。

标签: javaspring-mvcjsp

解决方案


我想出了解决方案。我没有为 external_interface_id 生成 getter 和 setter。生成它们可以解决问题。


推荐阅读