由非法参数异常引起的EJB调用期间发生系统异常

问题描述 投票:1回答:1

我不太确定它有什么问题。它不断显示这些错误消息。似乎有一些空值,但我似乎无法识别和纠正这些问题。任何人都可以帮忙看看吗?

更新:我认为问题应该在managedbean或post构造方法中,但我似乎无法找出原因..

汇总的错误消息

System exception occurred during an invocation on EJB RequestController, 
method: public entity.Request ejb.session.stateless.RequestController.retrieveRequestByRequestId(java.lang.Long) throws exception.RequestNotFoundException

Caused by: java.lang.IllegalArgumentException: An instance of a null PK has been incorrectly provided for this find operation.

Postconstruct In Delete Request ManagedBean

@PostConstruct
public void postConstruct() {

    requestId = (Long)FacesContext.getCurrentInstance().getExternalContext().getFlash().get("request");
    try {
        request = requestControllerLocal.retrieveRequestByRequestId(requestId);
    }
//Removed some irrelevant codes

删除请求方法在DeleteRequestManagedBean中

public void deleteRequest() {

    requestControllerLocal.deleteRequest(requestId); 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Request has been successfully deleted: ", null));
}

用于删除xhtml中的请求的按钮

<p:commandButton value="Remove" icon ="fa fa-fw fa-remove" styleClass="p-btnDelete" actionListener="#{deleteRequestManagedBean.deleteRequest}"/>

删除请求控制器中的请求方法(无状态会话Bean)

@Override
public void deleteRequest(Long requestId) throws RequestNotFoundException, DeleteRequestException {
//Removed some irrelevant codes
Request requestToDelete = retrieveRequestByRequestId(requestId);
requestToDelete.getCategory().getRequests().remove(requestToDelete);
        em.remove(requestToDelete);
}

如果您需要任何其他信息,请随时告诉我。谢谢!

jpa jsf
1个回答
0
投票

事实证明我的managedbean和xhtml页面都存在问题。

我必须使用getAttribute(),并从xhtml页面获取属性“postRToDelete”。没有得到这个,它继续给我空指针,非法参数例外。

这对于那些犯了同样错误的人来说是有利的。

DeleteRequestManagedbean

Request request = (Request) event.getComponent().getAttributes().get("postRToDelete");

xhtml页面

<p:commandButton value="Delete" icon ="fa fa-fw fa-remove" styleClass="p-btnDelete" actionListener="#{profileManagedBean.deletePostedRequest}" update="@form">

<!--attribute from here-->
<f:attribute name="postRToDelete" value="#{postedReq}"/>
</p:commandButton>
© www.soinside.com 2019 - 2024. All rights reserved.