2014-05-18 3 views
0

catch/catch 블록에서 메시지를 보내고 문제에 대해 뭔가를 던지면 예외가 throw됩니다.이 경우에는 다음에 오는 모든 것을 차단합니다. 비즈니스 규칙 메서드, 난 관리되는 콩 메서드에서 모든 것을 피하기)예외 발생 후 FacesContext 메시지

글쎄, 난 단지 작동하지만 괜찮아요 작동하지만 호출 메서드를 (실제 trycatch)

사실은 무엇을 가지고 :

public void save() { 
    ProdEN prod; 
    if(prod.getId() == null) { 
     prod = prodDB.insert(prod); 
    } else { 
     prod = prodDB.update(prod); 
    } 
    if(prod== null) { 
     FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save")); 
    } 
    FacesUtil.addInfoMessage(MessageProvider.getMessage("products.save.success")); 
} 

을 호출 한 다음 호출 된 메서드 :

public ProdEN insert(ProdEN prod) { 
    try { 
     beginTransaction(); 
     prod = (ProdEN) insert(prod, true); 
     commitTransaction(); 
    } catch (Exception ex) { 
     FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save")); 
     FacesContext.getCurrentInstance().responseComplete(); 
     throw ex; 
    } 
    return prod; 
} 

일부 검색을 시도했는데 발견되지 않은 아이디어가 있습니까? 감사.

+0

자바에서는 이름을 반환하는 객체를 정의 할 수 없다고 생각합니다. ** ProdEN return; ** 오류가 발생해야합니다. – gyanu

+0

죄송합니다. 여기에 붙여 넣는 동안 copypaste 오류가 발생했습니다 : p – Simego

답변

1

이렇게 작동해야합니다.

삽입 방법이 변경되었습니다.

여기에 오류 메시지를 추가 할 필요가 없습니다. 또한 찌르다 객체를 반환 할 필요가 없습니다. Java는 가치 값을 변경합니다.

public void insert(ProdEN prod) { 
    try { 
     beginTransaction(); 
     prod = (ProdEN) insert(prod, true); 
     commitTransaction(); 
    } catch (Exception ex) { 
     //FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save")); 
     //FacesContext.getCurrentInstance().responseComplete(); 
     throw ex; 
    } 
    //return prod; 
} 

이제 저장 방법.

public void save() { 
    ProdEN prod; 
    try{ 
      if(prod.getId() == null) { 
       prodDB.insert(prod); 
       if(prod.getId()==null){ 
       FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save")); 
       return 
       } 
      } else { 
       prod = prodDB.update(prod); 
      } 
    }catch(Exception e){ 
    FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save")); 
    return; 
    } 

    FacesUtil.addInfoMessage(MessageProvider.getMessage("products.save.success")); 
} 
+0

'if (prod.getId() == null)'if (prod.getId() == null)'내부에 의미가 없습니다. 그것을 제거하십시오. return이 포함 된 경우에는 'else'가 필요하지 않습니다. 첫 번째 반환 후 누락; –

+0

@VasilLukach OP가 그 이유는 id가 null이면 삽입했기 때문입니다. 삽입 작업은 ID를 업데이트해야하므로 ID를 채운 삽입이 채워 졌는지 여부를 확인합니다. – Makky

+0

나는 예외를 던지기 위해 예외를 던지기 위해 무언가를하려고 시도했다. 또한 메시지를 얼굴에 추가하려고했다. 즉,'new CustomException ("my.message.resource");를 던져라. 그것은 모든 것을 취소합니다, 그것은 메시지 생산을 취소하고보기에 표시하지 않는 것, idk 어떻게 고칠 지 .. – Simego