来自数据库的 JSP 中的下拉列表

dropdown list in JSP from database

我是 Spring 的新手,我担心这个问题可能会重复,因为有很多方法可以从数据库中获取资源到下拉菜单,但我不明白,所以我询问是否有人可以通过修复我的代码或使用与我的相匹配的他们自己的代码来帮助我,因为这对我来说很容易学习。

我的POJO

@Entity
@Table(name = "emp69")
public class Emp {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String designation;

....Constructor with name & designation field...

......getters method and setters method.....

我的存储库

public interface EmpRepository extends JpaRepository<Employee, Integer> {
@Modifying
@Query(
        value = "select designation from employee",
        nativeQuery = true
)
List<String> designation();

}

我的数据访问对象

@Service
public class EmployeeDao {
    @Autowired
    private EmpRepository repo;

    @Transactional
    public List<String> desig() {
        return repo.designation();
    }
}

我的控制器

@Controller
public class EmployeeController {
    @Autowired
    EmployeeDao dao;

    @RequestMapping("/empform")
    public String showform(Model m) {
        List<String> designation= dao.designation();
        m.addAttribute("designation", designation);
        return "empform";
    }
}

我的JSP页面

<select>
    <c:forEach var="dd" items="${designation}">
        <option><c:set var="dd.designation">${dd.designation }</c:set></option>
    </c:forEach>
</select>

我觉得一切都很好,但是当我执行时,它给出了

Property [designation] not found on type [java.lang.String]

错误。

在 STS 控制台上

javax.el.PropertyNotFoundException: Property [designation] not found on type [java.lang.String]

你的 Controller, Service & Repository 部分是正确的,但是你好像没学好JSP。我建议你从一个大框架退后一步,先单独学习它的每个方面,比如 JSPJSTL等等。走这条路,你对大框架的理解就会更加清晰。

无论如何,这就是你的答案..

<select>
    <c:forEach var="dd" items="${designation}">
        <option><c:set var="d" value="${dd}" /><c:out value="${d }"/></option>
    </c:forEach>
</select>

只需在您的代码中替换这部分..

希望对您有所帮助