Spring Mvc, jsp

196
18 ноября 2017, 09:47

Здравствуйте!

Практикуюсь со Spring MVC. Есть классы Company, Employee. Связь один ко многим. Имеется страница со списком сотрудников компании http://localhost:8080/employees/32, где 32 - company_id



Пытаюсь реализовать добавление Employee к определенной Company по company_id.

employees.jsp

<%@ page import="java.net.URLConnection" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head>
<title>Employee List</title>
</head>
<body>
<h1>List of company employees</h1>
<br>
<br>
<c:if test="${!empty employeeListByCompanyId}">
<table class="tg">
    <tr>
        <th width="80">ID</th>
        <th width="120">Name</th>
        <th width="120">Age</th>
        <th width="120">Salary</th>
        <th width="120">Position</th>
        <th width="60">Edit</th>
        <th width="60">Delete</th>
    </tr>
    <c:forEach items="${employeeListByCompanyId}" var="employee">
        <tr>
            <td>${employee.id}</td>
            <td>${employee.name}</td>
            <td>${employee.age}</td>
            <td>${employee.salary}</td>
            <td>${employee.position}</td>
            <td><a href="<c:url value='{companyid}/edit/${employee.id}'/>">Edit</a></td>
            <td><a href="<c:url value='{companyid}/remove/${employee.id}'/>">Delete</a></td>
        </tr>
    </c:forEach>
</table>
</c:if>
<br>
<br>
<h1>Add a Employee</h1>
<c:url var="addAction" value="/employees/{id}/add"/>
<form:form action="${addAction}" commandName="employee">
<table>
    <c:if test="${!empty employee.name}">
        <tr>
            <td>
                <form:label path="id">
                    <spring:message text="ID"/>
                </form:label>
            </td>
            <td>
                <form:input path="id" readonly="true" size="8"     
disabled="true"/>
                <form:hidden path="id"/>
            </td>
        </tr>
    </c:if>
    <tr>
        <td>
            <form:label path="name">
                <spring:message text="Name"/>
            </form:label>
        </td>
        <td>
            <form:input path="name"/>
        </td>
    </tr>
    <tr>
        <td>
            <form:label path="age">
                <spring:message text="Age"/>
            </form:label>
        </td>
        <td>
            <form:input path="age"/>
        </td>
    </tr>
    <tr>
        <td>
            <form:label path="salary">
                <spring:message text="Salary"/>
            </form:label>
        </td>
        <td>
            <form:input path="salary"/>
        </td>
    </tr>
    <tr>
        <td>
            <form:label path="position">
                <spring:message text="Position"/>
            </form:label>
        </td>
        <td>
            <form:input path="position"/>
        </td>
    </tr>
    <tr>
        <td>
            <form:label path="company">
                <spring:message text="company"/>
            </form:label>
        </td>
        <td>
            <form:input path="company"/>
        </td>
    </tr>

    <tr>
        <td colspan="2">
            <c:if test="${!empty company.name}">
                <br>
                <input type="submit"
                       value="<spring:message text="Edit Company"/>"/>
            </c:if>
            <c:if test="${empty company.name}">
                <br>
                <input type="submit"
                       value="<spring:message text="Add Company"/>"/>
            </c:if>
        </td>
    </tr>
</table>
</form:form>
</body>
</html>

Но каким образом вытащить данный id_company и чтоб в value="/employees/{id}/add" подставился нужны id?

EmployeeController.java

@Controller
public class EmployeeController {
private EmployeeService employeeService;
@Autowired(required = true)
@Qualifier(value = "employeeService")
public void setEmployeeService(EmployeeService employeeService) {
    this.employeeService = employeeService;
}
@RequestMapping(value = "employees/{id}", method = RequestMethod.GET)
public String employeeListByCompanyId(@PathVariable("id") int id,
                                      Model model){
    model.addAttribute("employee", new Employee());
    model.addAttribute("employeeListByCompanyId",
            this.employeeService.employeeListByCompanyId(id));
    return "employees";
}
@RequestMapping(value = "/employees/{id}/add", method = RequestMethod.POST)
public String addEmployee(@ModelAttribute("employee")Employee employee){
    if (employee.getId() == 0){
        this.employeeService.addEmployee(employee);
    } else {
        this.employeeService.updateEmployee(employee);
    }
    return "redirect:/companies";
}
@RequestMapping("/employees/{id}/remove/{id}")
public String removeEmployee(@PathVariable("id") int id, Model model){
    this.employeeService.removeEmployee(id);
    return "redirect:/companies";
}

@RequestMapping("/employees/{companyid}/edit/{id}")
public String editBook(@PathVariable("id") int id, Model model){
    model.addAttribute("employee", this.employeeService.getEmployeeById(id));
    model.addAttribute("employeeFullList", this.employeeService.employeeFullList());
    return "redirect:/employees/{}";
}
}
Answer 1

в методе employeeListByCompanyId

добавьте id компании в атрибуты

model.addAttribute("companyID", id);

и тогда ссылка будет такая

<c:url var="addAction" value="/employees/{companyID}/add"/>
READ ALSO
Как правильно инициализировать объект java?

Как правильно инициализировать объект java?

Можно ли так писать код? Будет ли утечка памяти и тд

175
Настройка SSL сертификата для Ngrok. Telegram-bot на C#

Настройка SSL сертификата для Ngrok. Telegram-bot на C#

Я хочу написать Telegram Bota на C#, используя WebHookЯ воспользовался сервисом Ngrok, который выдает https-адрес, и будет перенаправлять пакеты на локальную...

409
Не работает Десериализация XML c#

Не работает Десериализация XML c#

Пытаюсь десериализовать XML:

293
Как обозначить в keypress клавишу backspace [требует правки]

Как обозначить в keypress клавишу backspace [требует правки]

Как разрешить нажатие клавиши backspace и delete в Keypress

238