[英]Display list in JSP using Spring MVC
我正在尝试通过其主键(catCodes)显示数据库表中的所有行,但出现NullPointerException错误。 我可以通过指定主键来显示一行,但无法显示所有行。
JSP:
<table class="table table-hover table-striped-rows table-bordered table-condensed">
<thead>
<tr>
<td><b>Category Description</b></td>
<td><b>Category Audit Date</b></td>
<td><b>Category Audit Location</b></td>
</tr>
</thead>
<c:forEach var="listValue" items="${eligCatsForm.eligCats}">
<tr>
<td>
<c:out value="${listValue.catDesc}" />
</td>
<td>
<c:out value="${listValue.catAuditDate}" />
</td>
<td>
<c:out value="${listValue.catAuditLocation}" />
</td>
</tr>
</c:forEach>
</table>
控制器:
@ActionID(action = ActionTypes.NO_LOG)
@RequestMapping(value ="displayEligCats",method = RequestMethod.GET)
@PreAuthorize("hasAnyRole('ROLE_EMS_NOTE_VIEWER','ROLE_EMS_NOTE_USER','ROLE_EMS_NOTE_UPDATE_USER')")
public String displayEligCats(@RequestParam(value="catCode", required=false) Long catCode, Model model) {
try {
List<EligibilityCategories> eligCats = eligibilityCategoriesService.getEligCats(catCode);
EligibilityCategoriesForm eligCatsForm = new EligibilityCategoriesForm ();
eligCatsForm.setEligCats(eligCats);
model.addAttribute("eligCatsForm", eligCatsForm);
logger.debug("Exiting AdminReviewController.displayEligNotes");
return WebConstants.RETURN_ELIG_CATS;
} catch (Exception e) {
if(logger.isErrorEnabled())
{
logger.error(e);
}
throw new ErrorException(e.getMessage());
}
}
服务:
public interface EligibilityCategoriesService {
List<EligibilityCategories> getEligCats(long catCode);
}
ServiceImpl:
@Service("eligibilityCategories")
public class EligibilityCategoriesServiceImpl implements EligibilityCategoriesService {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
EligibilityCategoriesDao eligCatsDao;
@Autowired
private CoreDao coreDao;
@Override
public List<EligibilityCategories> getEligCats(long catCode) {
return eligCatsDao.getEligCats(catCode);
}
}
DAO:
public interface EligibilityCategoriesDao {
final static String FIND_ELIG_CATS_BY_CAT_CODE = "EligibilityCategories.findEligCatsByCatCode";
List<EligibilityCategories> getEligCats(long catCode);
}
JPA DAO:
@Repository
public class JPAEligibilityCategoriesDao implements EligibilityCategoriesDao {
protected final Log logger = LogFactory.getLog(getClass());
@PersistenceContext(unitName = "emf")
private EntityManager entityManager;
@Override
public List<EligibilityCategories> getEligCats(long catCode) {
Query query = entityManager.createNamedQuery(FIND_ELIG_CATS_BY_CAT_CODE);
query.setParameter(QueryParameterConstants.QPC_CAT_CODE, catCode);
@SuppressWarnings("unchecked")
List<EligibilityCategories> eligCats = (List<EligibilityCategories>) query.getResultList();
return eligCats;
}
}
形成:
public class EligibilityCategoriesForm {
private Long catCode;
private List<EligibilityCategories> eligCats;
public Long getCatCode() {
return catCode;
}
public void setCatCode(Long catCode) {
this.catCode = catCode;
}
public List<EligibilityCategories> getEligCats() {
return eligCats;
}
public void setEligCats(List<EligibilityCategories> eligCats) {
this.eligCats = eligCats;
}
}
域:
@Entity
@Table(name="TSEM_ELIG_CATS")
public class EligibilityCategories implements java.io.Serializable {
private long catCode;
private String catDesc;
private Integer catVerNum;
private Long catAuditUser;
private Date catAuditDate;
private String catAuditAction;
private String catAuditLocation;
public EligibilityCategories() {
}
public EligibilityCategories(long catCode, String catDesc, Integer catVerNum,
Long catAuditUser, Date catAuditDate, String catAuditAction,
String catAuditLocation) {
this.catCode = catCode;
this.catDesc = catDesc;
this.catVerNum = catVerNum;
this.catAuditUser = catAuditUser;
this.catAuditDate = catAuditDate;
this.catAuditAction = catAuditAction;
this.catAuditLocation = catAuditLocation;
}
@Id
@Column(name = "CAT_CODE", unique = true, nullable = false, precision = 10, scale = 0)
public long getCatCode() {
return this.catCode;
}
public void setCatCode(long catCode) {
this.catCode = catCode;
}
@Column(name = "CAT_DESC", nullable = false, length = 2000)
public String getCatDesc() {
return this.catDesc;
}
public void setCatDesc(String catDesc) {
this.catDesc = catDesc;
}
@Column(name = "CAT_VER_NUM", precision = 5, scale = 0)
public Integer getCatVerNum() {
return this.catVerNum;
}
public void setCatVerNum(Integer catVerNum) {
this.catVerNum = catVerNum;
}
@Column(name = "CAT_AUDIT_USER", precision = 10, scale = 0)
public Long getCatAuditUser() {
return this.catAuditUser;
}
public void setCatAuditUser(Long catAuditUser) {
this.catAuditUser = catAuditUser;
}
@Temporal(TemporalType.DATE)
@Column(name = "CAT_AUDIT_DATE", length = 7)
public Date getCatAuditDate() {
return this.catAuditDate;
}
public void setCatAuditDate(Date catAuditDate) {
this.catAuditDate = catAuditDate;
}
@Column(name = "CAT_AUDIT_ACTION", length = 1)
public String getCatAuditAction() {
return this.catAuditAction;
}
public void setCatAuditAction(String catAuditAction) {
this.catAuditAction = catAuditAction;
}
@Column(name = "CAT_AUDIT_LOCATION", length = 20)
public String getCatAuditLocation() {
return this.catAuditLocation;
}
public void setCatAuditLocation(String catAuditLocation) {
this.catAuditLocation = catAuditLocation;
}
}
任何建议都将非常有帮助。 我是Java和Spring的新手,所以请不要笑。
您将参数catCode
声明为基本类型long:
getEligCats(long catCode);
但是在Controller
类中,参数catCode
被声明为Long
对象。
当您调用displayEligCats
以获取“所有类别”而不指定任何catCode时,其参数将为null
,并且不能将其“广播”为原始类型。
像这样在service和dao中更改方法定义的签名:
getEligCats(Long catCode);
并且要小心检查catCode参数的null
值。
希望对您有帮助,再见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.