2016-08-08 6 views
0

So bekomme ich eine Liste von staff.Wie bekomme ich Ergebnisse von einem Controller mit aktivierten Parametern?

public class StaffController { 
    private static final Logger logger = LoggerFactory.getLogger(StaffController.class); 

    @Inject 
    private StaffService service; 

    @RequestMapping(value = "/list", method = RequestMethod.GET) 
    public String listAll(@Param("branchId") Integer branchId, 
         @Param("page") Integer page, 
         @Param("rowsPerPage") Integer rowsPerPage, 
         Model model, 
         HttpServletRequest request) throws Exception { 
     logger.info("Staff information list page."); 
     model.addAttribute("context", request.getContextPath()); 

     Map<String, Object> keys = new HashMap<String, Object>(); 
     keys.put("branchId", branchId); 
     keys.put("page", page); 
     keys.put("rowsPerPage", rowsPerPage); 
     //List<StaffVO> list = service.listAll(1, 1, 10); 
     List<StaffVO> list = service.listAll(keys); 


     model.addAttribute("list", list); 

     return "/staff/list"; 
    } 
} 

Und dann in JSP, erhalte ich das Ergebnis wie folgt:

<% List<StaffVO> list = (List<StaffVO>)request.getAttribute("list"); %> 

Ok, groß. aber wo in der Erde sollte ich Parameter wie branchId, page und rowsPerPage weitergeben. Damit kann der Controller genau nachfragen was ich will.

Für jetzt ignoriere ich einfach Parameter und nur alles abfragen, weil branchId, page, rowsPerPage sind alle null.

Und hier ist mein StaffMapper:

public interface StaffMapper { 

    final String SELECT_STAFF = 
     "SELECT staff.id, staff_level, staff.name, cell, date_join, employment, status, allow_absence_control, branch.id as branch_id, branch.name as branch_name " + 
     "FROM staff " + 
     "LEFT JOIN branch " + 
     "ON staff.branch_id=branch.id " + 
     "WHERE branch.id=1"; 

    @Select(SELECT_STAFF) 
    public List<StaffVO> listAll(Map<String, Object> keys) throws Exception; 
} 

SO, davon ausgehen, dass ich jetzt keys haben, die tatsächlich Schlüssel und Werte hat. Wie kann ich dann diese Information in die SELECT-Zeichenfolge einfügen?

Ich versuchte WHERE branch.id = #{keys[branchId]} und viele mehr, aber leider nicht funktioniert.

+0

Sie versuchen also, von Ihrer JSP abzufragen? –

+0

@IvanLymar Ich möchte nur wissen, wie Parameter an die Methode listAll() im Controller übergeben werden. – sCha

Antwort

0

Wenn ich Sie richtig verstehe, müssen Sie Daten in Ihrem Controller erhalten. Sie können dies auf zwei Wegen erreichen:

1) @PathVariable

@RequestMapping("/foo/{bar}/{bazz}") 
public String getEvent(@PathVariable Long bar,@PathVariable String bazz) { 
model.addAttribute(...); 
return model; 
} 

URL Beispiel:

hostname: port/foo/2/Hallo

hostname: port/foo/3/Tschüss

Zwei letzte Variablen werden als Pfadvariablen behandelt und können im Controller verwendet werden.

2) @RequestParam

@RequestMapping(value = "/balance", method = RequestMethod.POST) 
public String addBalance(@RequestParam Double bar){ 
... 
} 

Hier müssen Sie HTML-Formular verwenden, z.B.

<form name="foo" action="/balance" method="post"> 
Add money: 
    <input type="number" name="bar" /></br> 
    <input type="submit" value="Save" /> 
</form> 

Dadurch wird die Variable < Eingang> Parameter anfordern. Namen in Eingabe und Controller sollten identisch sein.

p.s. Scriptlets sind nicht der beste Weg, Daten in JSP zu bekommen. Ich glaube, dass es schlecht ist, HTML und JAVA zu mischen. Sie sollten JSTL verwenden.

Verwandte Themen