2013-11-03 58 views
0

我有一個觀點,我想用來顯示從兩個給定日期範圍內選擇患者遇到的日期startDate結束日期並顯示在同一頁上的結果,但是,我想也可以在第一次加載頁面時在同一頁面上顯示所有結果。 當我從我的方法中的請求中獲取參數時,第一次加載頁面時,它會拋出一個空的params異常,因爲這些參數的參數startDate和End Date在第一次加載頁面時爲空時間......這是我的看法從JSP視圖處理空參數到控制器

<%@ include file="/WEB-INF/template/include.jsp"%> 
<%@ include file="/WEB-INF/template/header.jsp"%> 

<%@ include file="template/localHeader.jsp"%> 

<p>Hello ${user.systemId}!Add Interface Implementation Code Here</p> 
<form action="/module/practicalexercise/manage" method="GET"> 
From Date:<openmrs_tag:dateField formFieldName="startDate" startValue=""/> 

To Date:<openmrs_tag:dateField formFieldName="endDate" startValue="" /> 
<br/><input type="submit" value="Submit"> 


</form> 
<br/> 
<b>Total :${resultCount}</b> 
<br/> 
<b>EncounterType Breakdown</b> 
<table> 
<tr> 
<th>#</th><th>Encounter Type</th><th>Total</th></tr> 
<c:forEach items="${EncTypeMap}" var="entry" varStatus="var"> 
<tr><td><c:out value="${var.count}" /></td><td>${entry.key}</td> <td> ${entry.value}</td> </tr> 
</c:forEach> 
</table> 
<%@ include file="/WEB-INF/template/footer.jsp"%> 

這裏是我的控制器

package org.openmrs.module.practicalexercise.web.controller; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.openmrs.EncounterType; 
import org.openmrs.Encounter; 
import org.openmrs.api.EncounterService; 
import org.openmrs.api.context.Context; 
import org.springframework.stereotype.Controller; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 



@Controller 
public class PracticalExerciseManageController { 

protected final Log log = LogFactory.getLog(getClass()); 

@RequestMapping(value = "/module/practicalexercise/manage", method = RequestMethod.GET) 
public void manage(@RequestParam("startDate") String startDate,@RequestParam("endDate") String endDate,ModelMap model) { 

    EncounterService encounterService = Context.getEncounterService(); 
    SimpleDateFormat format = new SimpleDateFormat("dd MM YYYY "); 
    Date from=null; 
    Date to=null; 

    try { 
      from=format.parse(startDate) ; 

     to = format.parse(endDate); 
    } catch (ParseException e) { 

     e.printStackTrace(); 
    } 
    List<Encounter> encounters = encounterService.getEncounters(null, null, 
      from, to, null, null, null,true); 
    List<EncounterType> encounterTypes = encounterService.getAllEncounterTypes(); 
    Map<String,Integer> countMap=new HashMap<String,Integer>(); 



     for(EncounterType encType:encounterTypes){ 
      int encTypeCount=0; 
      for(Encounter encounter:encounters){ 
       if(encounter.getEncounterType().getId().equals(encType.getId())) 
        encTypeCount++; 

     } 
      countMap.put(encType.getName(), encTypeCount); 

    } 

    model.addAttribute("user", Context.getAuthenticatedUser()); 
    model.addAttribute("EncTypeMap", countMap); 
    model.addAttribute("size", countMap.size()); 
    model.addAttribute("resultCount",encounters.size()); 


} 
} 

回答

1

您可以添加必需虛假的日期,所以當它們不存在也不會失敗:

@RequestParam(value = "startDate", required=false) String startDate 
+0

感謝它只是工作,...但我仍然不能回到同一個頁面後,我點擊提交...因爲它是一個獲取請求它將附加參數到URL的url部分匹配使用的映射控制器,但添加一個查詢字符串...映射網址是/模塊/ practicalexercise /管理和提交我在瀏覽器中獲取此URL http:// localhost:8082/module/practicalexercise /管理?startDate = 27 %2F10%2F2013&endDate = 07%2F11%2F2013 – Eliethesaiyan

+0

如何返回到同一頁面? – cy3er

相關問題