Мой базовый класс
@MappedSuperclass
public abstract class BaseEntity<T> implements Serializable {
@Id
@GeneratedValue
protected T id;
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}
}
Мой класс
public class Spravochnik extends BaseEntity {
private List<String> columnName;
private List<List<String>> stringsAndValues;
}
мой RowMapper
public class SpravochnikRowMapper implements RowMapper<Spravochnik> {
@Override
public Spravochnik mapRow(ResultSet rs, int arg1) throws SQLException {
Spravochnik spr = new Spravochnik();
ResultSetMetaData rsmeta = rs.getMetaData();
List<String> columnNames = new ArrayList<>();
List<List<String>> valuesInRows = new ArrayList<List<String>>();
int columnCount = rsmeta.getColumnCount();
for(int column = 1; column <= columnCount; column++){
columnNames.add(rsmeta.getColumnName(column));
}
while(rs.next()) {
List<String> values = new ArrayList<>();
for(int column = 1; column <= columnCount; column++){
values.add(rs.getString(column));
}
valuesInRows.add(values);
}
return spr;
}
}
DaoImpl:
@Repository
public class SpravochnikDaoImpl implements SpravochnikDao {
public SpravochnikDaoImpl(NamedParameterJdbcTemplate template) {
this.template = template;
}
NamedParameterJdbcTemplate template;
@Override
public List<Spravochnik> findAll(String tableName) {
return template.query("select * from "+ tableName, new SpravochnikRowMapper());
}
}
Мой контроллер:
@Controller
@RequestMapping("/spravochnik")
public class SpravochnikController {
@Resource
SpravochnikService spravochnikService;
@PostMapping(value = "/list")
public String getSpravochniks(Model m, @RequestParam String tableName) {
List<Spravochnik> spravList = spravochnikService.findAll(tableName);
m.addAttribute("spravList", spravList);
return "list";
}
}
list.jsp
<c:forEach var="sprav" items="${spravList}">
<tr>
<td>
Obj:${sprav}
SpravId=${sprav.id}
</td>
<c:forEach var="mylist" items="${sprav.columnName}">
value=${mylist}
</c:forEach>
<td>
<c:forEach var="innerList" items="${sprav.stringsAndValues}">
<c:forEach var="obj" items="${innerList}">
value=${obj}
</c:forEach>
</c:forEach>
</td>
</tr>
</c:forEach>
home.jsp просто дает tableName, все в порядке, проходит правильно. Но всякий раз, когда я захожу в list.jsp после выбора имени таблицы из home.jsp, все переменные, кроме первой ($ sprav}, имеют значение null (не показано и равно null в отладчике).
Как решить это? Заранее спасибо!
Спасибо за ответ, но я использую @RequestParam, а не @FormParam ... и, как я уже говорил, последний jsp показывает, что существует некоторый объект ($ {sprav}) и $ {sprav.Id} и так далее. «т ... почему?