java - 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),我猜这可能是原因,但我不太确定。
解决方案
我想出了解决方案。我没有为 external_interface_id 生成 getter 和 setter。生成它们可以解决问题。
推荐阅读
- node.js - Array.map 里面的 Array.map 不工作
- c# - FullCalendar Asp.Net WebForms
- python - 如何使用 tkinter 在 python 中更改特定标签
- python - django静态预编译器的编译问题
- c# - Azure 与 Unity 如何创建查询?
- java - 使用有界类型参数的“两种方法都有相同的擦除”错误
- java - Android Studio 给我一个错误无法解析符号图
- r - R中具有mutate和case_when的用户定义函数
- python - 无法将数据写入 TensorBoard
- java - 为什么我不能使用 getActivity()