2011-04-27 3 views
0

계정 이름으로 데이터를 검색하는 계정이라는 테이블이 있는데 검색이 완벽하게 작동합니다. 내 데이터베이스에없는 것을 검색하려고하면 오류가 표시되므로 데이터가 테이블에 존재하지 않는다는 메시지를 표시하여 예외를 처리하려고합니다. 나는 그것을 어떻게 할 수 있습니까? 나는 spring mvc를 사용하고 있고 백엔드 mysql을 사용하여 3을 절전하고있다.spring mvc를 사용하여 JSP로 데이터를 검색 할 때 null 값 오류 메시지를 표시하는 방법은 무엇입니까?

여기 내 코드입니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

    <div class="boxed"> 
      <div class="title">Account Search</div> 
      <div class="content"> 
       <form id="form4" method="get" action="#"> 
        <fieldset> 
        <legend>Search</legend> 
        <input id="inputtext3" type="text" name="inputtext3" value="" class="textfield" /> 
        <input id="inputsubmit2" type="submit" name="inputsubmit2" value="Search" class="button" /> 
        <p class="tiny"><a href="#">Advanced Search</a></p> 
        </fieldset> 
       </form> 
      </div> 
    </div> 


</div> 

<div id="col-form"> 
    <div class="boxed"> 
     <div class="title">Group Account</div> 
     <div class="content"> 
     <table border="1" width=100% >   
     <tr> 
     <td bgcolor="#BBDDFF" >Account Id</td> 
     <td bgcolor="#BBDDFF" >Account Group</td> 
     <td bgcolor="#BBDDFF" >Closing Balance</td> 
     <td bgcolor="#BBDDFF" >Account Type</td> 
     <td bgcolor="#BBDDFF" >Remarks</td> 
     </tr>     
     <c:forEach var="accounts" items="${accountsList}"> 
     <tr bgcolor="#FFFFFF">  
     <td>${accounts.accountId}</td>     
     <td><a href="accountsledger.htm?accountId=${accounts.accountId}">${accounts.accountGroup}</a></td> 
     <td>${accounts.closingBalance}</td> 
     <td>${accounts.closingType}</td> 
     <td>${accounts.remarks}</td> 
     </tr> 
     </c:forEach>   
     </table>  
     </div> <!-- content --> 
    </div> <!-- boxed --> 

</body>  

</html> 

답변

0

귀하의 accountsDao.searchAccounts 사용자 정의 던질 수있는 예외 :

@Override 
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) 
    throws Exception{ 

    String accountName = ServletRequestUtils.getStringParameter(request, "accountName"); 
    List<Accounts> accounts = accountsDao.searchAccounts(accountName); 
     if (accounts == null || accounts.isEmpty()){    
     ModelAndView mav = new ModelAndView("forward:searchaccounts.htm"); 
     System.out.println("searching data"); 
     return mav.addObject("message", "message.form.searchaccounts");   
    } else { 
     ModelAndView mav = new ModelAndView(); 
     return mav.addObject(accounts); 
    }  
} 

이 내 검색이 JSP 계정입니다 : 이것은 내 검색 컨트롤러입니다

@SuppressWarnings("unchecked") 
@Transactional(readOnly=true) 
public List<Accounts> searchAccounts(String account){ 
    System.out.println("Executing Search Accounts Query:::::::::::::::::::::::::::::::::::::::::::::::"); 

    List<Accounts> accounts = getHibernateTemplate().find("from Accounts a here a.accountName = ?", account); 
    if (accounts != null) 
    { 
     return accounts; 
    } 
    return null; 
} 

:

내 최대 절전 DAO이다 .

예컨대

대신 널 (null)을 반환

throw new AccountException("Account not Found");

컨트롤러에서 해당 예외를 catch하고 ModelAndView 객체에 오류 메시지를 설정하십시오.

protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) 
    throws Exception{ 
      String accountName = ServletRequestUtils.getStringParameter(request, "accountName"); 
      ModelAndView mav = new ModelAndView("forward:searchaccounts.htm"); 
      List<Accounts> accounts = null; 
      try{ 
       accounts = accountsDao.searchAccounts(accountName); 
      }catch(AccountException ex){ 
       mav.addObject("errorMsg",ex.getMessage()); 
      } 

      mav.addObject("accountsList",accounts); 
      return mav; 
     } 
    } 
JSP

<font color='red'>${errorMsg}</font> 

에서

또는 다른 접근 방법을 시도 할 수 있습니다.

Evaluate if list is empty JSTL

+0

덕분에 zawhtut,하지만 난 내가 검색 버튼에 클릭하면하면서, JSP 페이지에서 메시지를 표시합니다. – sameer

+0

안녕하세요 @ sameer 이전 답변이 상당히 추상적이라는 것이 내 잘못이었습니다. 업데이 트를 참조 – zawhtut

+0

노력 zawhtut 주셔서 감사합니다, 나는이 방법이 작동하지 않는 시도. 이 오류를 보여줍니다. java.lang.StackOverflowError \t org.apache.catalina.connector.Request.getAttribute (Request.java:877) – sameer

관련 문제