从Java JSP视图访问Bean属性无效

从Java JSP视图访问Bean属性无效,java,html,jsp,jakarta-ee,model-view-controller,Java,Html,Jsp,Jakarta Ee,Model View Controller,我有一个具有以下属性的对象: public final class CaseNote { private final Long caseNoteId; private final Long subGroupId; private final String title; private final String caseNoteTypeCode; private final Date contactDate; private final Date

我有一个具有以下属性的对象:

public final class CaseNote {

    private final Long caseNoteId;
    private final Long subGroupId;
    private final String title;
    private final String caseNoteTypeCode;
    private final Date contactDate;
    private final Date completedDateTime;
    private final Long personVisitId;
    private final Date createdDateTime;
    private final Long createdByWorkerId;
    private final Long createdByTeamId;
    private final List<CaseNoteDetailsDTO> noteDetails = new ArrayList<CaseNoteDetailsDTO>();
    private final List<GroupMemberDetailsDTO> selectedMembers = new ArrayList<GroupMemberDetailsDTO>();
    private final ReferenceProvider referenceProvider;
    private final Date timeOutDate;


    public CaseNote(final CaseNotesDTO caseNoteDto, final List<CaseNoteDetailsDTO> noteDetails,
                    final List<GroupMemberDetailsDTO> selectedMembers, final ReferenceProvider referenceProvider) {

        this.caseNoteId = caseNoteDto.getCaseNoteId();
        this.subGroupId = caseNoteDto.getSubGroupId();
        this.title = caseNoteDto.getTitle();
        this.caseNoteTypeCode = caseNoteDto.getCaseNoteTypeCode();
        this.contactDate = caseNoteDto.getContactDateTime();
        this.completedDateTime = caseNoteDto.getCompletedDateTime();
        this.personVisitId = caseNoteDto.getPersonVisitId();
        this.createdDateTime = caseNoteDto.getCreatedDateTime();
        this.createdByWorkerId = caseNoteDto.getCreatedByWorkerId();
        this.createdByTeamId = caseNoteDto.getCreatedByTeamId();
        this.timeOutDate = caseNoteDto.getTimeOutDate();

        this.noteDetails.clear();
        this.selectedMembers.clear();
        this.noteDetails.addAll(noteDetails);
        Collections.sort(this.noteDetails, new CaseNoteDetailCreatedDateComparator());
        this.selectedMembers.addAll(selectedMembers);

        this.referenceProvider = referenceProvider;
    }

    private class CaseNoteDetailCreatedDateComparator implements Comparator<CaseNoteDetailsDTO> {

    @Override
    public int compare(final CaseNoteDetailsDTO firstCaseNoteDetail, final CaseNoteDetailsDTO secondCaseNoteDetail) {
        return firstCaseNoteDetail.getCreatedDateTime().compareTo(secondCaseNoteDetail.getCreatedDateTime());
    }
}

    public Long getCaseNoteId() {
        return caseNoteId;
    }

    public Long getSubGroupId() {
        return subGroupId;
    }

    public String getTitle() {
        return title;
    }

    public String getCaseNoteTypeCode() {
        return caseNoteTypeCode;
    }

    public Date getContactDate() {
        return contactDate;
    }

    public Date getCompletedDateTime() {
        return completedDateTime;
    }

    public Long getPersonVisitId() {
        return personVisitId;
    }

    public Date getCreatedDateTime() {
        return createdDateTime;
    }

    public Long getCreatedByWorkerId() {
        return createdByWorkerId;
    }

    public Long getCreatedByTeamId() {
        return createdByTeamId;
    }

    public List<CaseNoteDetailsDTO> getNoteDetails() {
        return Collections.unmodifiableList(noteDetails);
    }

    public List<GroupMemberDetailsDTO> getSelectedMembers() {
        return Collections.unmodifiableList(selectedMembers);
    }

    public boolean isSignificant() {
        boolean significantEvent = false;
        for (final CaseNoteDetailsDTO detail : this.getNoteDetails()) {
            significantEvent = significantEvent || detail.isSignificantEvent();
        }
        return significantEvent;
    }

    public String getCaseNoteTypeDescription() {
        return referenceProvider.provide(ReferenceDomain.CASENOTE_TYPE, getCaseNoteTypeCode());
    }

    public CaseNoteDetailsDTO getRootNoteDetails() {
        validateCaseNoteDetailsExists();
        return getNoteDetails().get(0);
    }

    public List<CaseNoteDetailsDTO> getAppendments() {
        validateCaseNoteDetailsExists();
        return getNoteDetails().subList(1, getNoteDetails().size());
    }

    private void validateCaseNoteDetailsExists() {
        if (getNoteDetails() == null || getNoteDetails().isEmpty()) {
            throw new IllegalStateException("No case note details found");
        }
    }

    public List<String> getMemberNames() {
        final List<String> memberNames = new ArrayList<String>();
        final List<GroupMemberDetailsDTO> selectedMembers = getSelectedMembers();
        for (final GroupMemberDetailsDTO memberDetails : selectedMembers) {
            memberNames.add(memberDetails.getName());
        }
        return memberNames;
    }

    public Date getTimeOutDate() {
        return timeOutDate;
    }

    public boolean isTimedOut() {
        return completedDateTime == null && new Date().after(this.timeOutDate);
    }

}
公开期末课程案例说明{
私人最终长caseNoteId;
私有最终长子ID;
私人最终字符串标题;
私有最终字符串caseNoteTypeCode;
私人最终日期;
私人最终日期completedDateTime;
私人终场长传;
私有最终日期createdDateTime;
私有最终Long createdByWorkerId;
私有最终Long CreatedByteMid;
private final List noteDetails=new ArrayList();
私有最终列表selectedMembers=new ArrayList();
私人最终参考提供人参考提供人;
私人最终日期超时日期;
公开案例说明(最终案例说明至案例说明,最终列表说明详情,
最终选定成员列表,最终参考提供程序(参考提供程序){
this.caseNoteId=caseNoteDto.getCaseNoteId();
this.subGroupId=caseNoteDto.getSubGroupId();
this.title=caseNoteDto.getTitle();
this.caseNoteTypeCode=caseNoteDto.getCaseNoteTypeCode();
this.contactDate=caseNoteDto.getContactDateTime();
this.completedDateTime=caseNoteDto.getCompletedDateTime();
this.personVisitId=caseNoteDto.getPersonVisitId();
this.createdDateTime=caseNoteDto.getCreatedDateTime();
this.createdByWorkerId=caseNoteDto.getCreatedByWorkerId();
this.createdByTeamId=caseNoteDto.getCreatedByTeamId();
this.timeOutDate=caseNoteDto.getTimeOutDate();
this.noteDetails.clear();
这是.selectedMembers.clear();
this.noteDetails.addAll(noteDetails);
Collections.sort(this.noteDetails,new CaseNoteDetailCreatedDateComparator());
this.selectedMembers.addAll(selectedMembers);
this.referenceProvider=referenceProvider;
}
私有类CaseNoteDetailCreatedDataComparator实现Comparator{
@凌驾
公共整数比较(最终案例说明详细信息到第一个案例说明详细信息,最终案例说明详细信息到第二个案例说明详细信息){
返回firstCaseNoteDetail.getCreatedDateTime().compareTo(secondCaseNoteDetail.getCreatedDateTime());
}
}
公共长getCaseNoteId(){
返回caseNoteId;
}
公共长GetSubjectId(){
返回子ID;
}
公共字符串getTitle(){
返回标题;
}
公共字符串getCaseNoteTypeCode(){
返回caseNoteTypeCode;
}
公共日期getContactDate(){
返回联系日期;
}
公共日期getCompletedDateTime(){
返回completedDateTime;
}
公共长getPersonVisitId(){
返回人员Visitid;
}
公共日期getCreatedDateTime(){
返回createdDateTime;
}
公共长getCreatedByWorkerId(){
返回createdByWorkerId;
}
公共长getCreatedByteMid(){
返回CreatedByteMid;
}
公共列表getNoteDetails(){
返回集合。不可修改列表(备注详细信息);
}
公共列表getSelectedMembers(){
返回集合。不可修改列表(selectedMembers);
}
公共布尔值不重要(){
布尔有效事件=假;
对于(最终案例NoteDetailsTo-detail:this.getNoteDetails()){
有效事件=有效事件| |细节。isSignificantEvent();
}
返回重要事件;
}
公共字符串getCaseNoteTypeDescription(){
返回referenceProvider.provide(ReferenceDomain.CASENOTE_TYPE,getCaseNoteTypeCode());
}
public CaseNoteDetailsTo getRootNoteDetails(){
验证SenoteDetailsSexists();
返回getNoteDetails().get(0);
}
公共列表getAppendments(){
验证SenoteDetailsSexists();
返回getNoteDetails().subList(1,getNoteDetails().size());
}
私人无效验证SenoteDetailsSexists(){
如果(getNoteDetails()==null | | getNoteDetails().isEmpty()){
抛出新的IllegalStateException(“未找到案例注释详细信息”);
}
}
公共列表getMemberNames(){
final List memberNames=new ArrayList();
最终列表selectedMembers=getSelectedMembers();
对于(最终组成员详细信息至成员详细信息:selectedMembers){
添加(memberDetails.getName());
}
返回成员名称;
}
公共日期getTimeOutDate(){
返回超时日期;
}
公共布尔值输出(){
return completedDateTime==null&&new Date().after(this.timeOutDate);
}
}
从JSP文件中,我想打印属性“createdWorkerId”,但它不起作用。我试着打印标题,但没有用createdWorkerId。该行如下所示:

<span class="highlighted"><%=noteClassDescription%>:&nbsp;<c:out value="${casenote.createdByWorkerId}"/> </span>
我应该先将createdWorkerId解析为字符串,还是问题是其他的?谢谢你的帮助


谢谢。

您是否在any for JSP中存储了
casenote
?您是否检查了createdByWorkerId是否为空,或者是否在JSP上使用
不为空
。可能控制器中的对象没有任何值,这就是为什么它为空的原因我尝试了您的if,但不起作用。即使这样,也是非常有用的,谢谢!我没有使用变量作用域。成员
createdByWorkerId
是私有的。它不应该是
casenote.getCreatedByWorkerId()