差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:jsf:logging [2008/04/13 15:23] – banana | study:jsf:logging [2008/04/13 15:52] (現在) – banana | ||
|---|---|---|---|
| 行 46: | 行 46: | ||
| return text; | return text; | ||
| } | } | ||
| + | ... | ||
| </ | </ | ||
| 行 63: | 行 64: | ||
| 이제 실제 코드에서 이 Utils 메소드를 사용하는 예를 보인다. | 이제 실제 코드에서 이 Utils 메소드를 사용하는 예를 보인다. | ||
| + | {{keywords> | ||
| 行 81: | 行 83: | ||
| String requestPath = httpRequest.getPathInfo(); | String requestPath = httpRequest.getPathInfo(); | ||
| ... | ... | ||
| - | |||
| String text = Utils.getDisplayString(Constants.BUNDLE_BASENAME, | String text = Utils.getDisplayString(Constants.BUNDLE_BASENAME, | ||
| " | " | ||
| new Object[] { requestPath }, | new Object[] { requestPath }, | ||
| | | ||
| - | httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND, | + | httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND, |
| - | text); | + | |
| ... | ... | ||
| </ | </ | ||
| 行 118: | 行 118: | ||
| 앞의 예제와 같이 문자열 상수를 사용하여 번들을 로드해야 한다.\\ | 앞의 예제와 같이 문자열 상수를 사용하여 번들을 로드해야 한다.\\ | ||
| 이 문자열은 파라미터를 갖지 않으므로 getDisplayString 메소드의 파라미터 배열에 null을 전달했다. | 이 문자열은 파라미터를 갖지 않으므로 getDisplayString 메소드의 파라미터 배열에 null을 전달했다. | ||
| + | |||
| 行 188: | 行 189: | ||
| **reportError**는 식별자에 근거하여 메세지를 로드하는 getMessage를 사용한다. | **reportError**는 식별자에 근거하여 메세지를 로드하는 getMessage를 사용한다. | ||
| + | 새로운 팩토리 메소드를 정의했으므로, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Example of using Utils.getMessage and Utils.reportError ===== | ||
| + | <code java> | ||
| + | public String login() | ||
| + | { | ||
| + | FacesContext facesContext = getFacesContext(); | ||
| + | Utils.log(facesContext, | ||
| + | |||
| + | User newUser = null; | ||
| + | try | ||
| + | { | ||
| + | newUser = getUserCoordinator().getUser(loginName, | ||
| + | } | ||
| + | catch (ObjectNotFoundException e) | ||
| + | { | ||
| + | facesContext.addMessage(null, | ||
| + | Utils.getMessage(" | ||
| + | | ||
| + | |||
| + | /* facesContext.addMessage(null, | ||
| + | new FacesMessage(FacesMessage.SEVERITY_WARN, | ||
| + | " | ||
| + | return Constants.FAILURE_OUTCOME; | ||
| + | } | ||
| + | catch (DataStoreException d) | ||
| + | { | ||
| + | | ||
| + | |||
| + | /* Utils.reportError(facesContext, | ||
| + | " | ||
| + | return Constants.ERROR_OUTCOME; | ||
| + | } | ||
| + | ... | ||
| + | </ | ||
| + | 변경된 부분의 getUser를 호출한 뒤 예외를 처리하는 곳이다. **%%ObjectNotFoundException%%**은 중요한 에러가 아니므로, | ||
| + | 이 경우 %%BadLogin%%이라는 식별자와 함께 **getMessage** 메소드를 사용하여 INFO 수준의 심각도를 갖는 메세지를 추가했다.\\ | ||
| + | **%%DataStoreException%%**은 심각한 에러이기 때문에, %%ErrorLoginUser%% 식별자와 함께 **reportError**를 호출했다. | ||
| + | ((코드 내에서 메세지를 생성시키는 것은 많은 양의 작업을 필요로 한다. %%FacesMessage%%를 위한 팩토리 메소드는 우리가 직접 작성할 것이 아니라 표준 API의 일부여야 한다고 생각한다. JSF의 차기 버전에서는 이것이 반영되기를 희망한다.)) | ||