【问题标题】:Display list in JSP using Spring MVC使用 Spring MVC 在 JSP 中显示列表
【发布时间】:2017-04-04 18:18:42
【问题描述】:

我正在尝试通过主键 (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);

}

}

道:

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 的新手,所以请不要笑。

【问题讨论】:

  • 请编辑您的问题并包含异常堆栈跟踪。

标签: java spring jsp spring-mvc


【解决方案1】:

您将参数 catCode 声明为原始类型 long:

getEligCats(long catCode);

但在Controller 类中,参数catCode 被声明为Long 对象。

当您调用displayEligCats 获取“所有类别”而不指定任何catCode 时,其参数将为null,并且不能“强制转换”为long 原始类型。

更改service和dao中方法定义的签名,如:

getEligCats(Long catCode);

并注意检查 catCode 参数的null 值。

希望对你有帮助,再见。

【讨论】:

  • 谢谢,修复了错误,但仍然没有显示结果,只是一个空白表。我还检查了空值。有什么想法吗?
  • 您必须检查执行查询时会发生什么,可能问题就在那里。控制器和视图好像没问题,发布SQL命令,可能catCode为空时你还在添加过滤参数?
猜你喜欢
  • 2013-12-20
  • 2018-02-07
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
相关资源
最近更新 更多