Невозможно получить значения в таблице после отправки значений - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над одним проектом Spring-MVC, у которого есть одна страница. product.jsp на этой странице имеет одну таблицу, и мне нужно применить условие с помощью JSTL к этой таблице.Условие - если значения равны нулю, он напечатает Запись не найдена , и если мы введем значения, она напечатает значения.Я не могу получить значения также в таблице, есть ли проблемы в контроллере, классе обслуживания и хранилище?Я пытался, но у меня нет ответа на это.Вот мой код ...

Это моя product.jsp страница

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<html>
<head>
<title>Login page</title>
</head>
<body>
    <form:form method="POST" modelAttribute="productData"
        action="product.do">
        <table border="1">
            <tr>
                <td>Product Id :</td>
                <td><form:input path="productId" /></td>
            </tr>
            <tr>
                <td>Product Name :</td>
                <td><form:input path="productName" /></td>
            </tr>
            <tr>
                <td>Product Desc :</td>
                <td><form:input path="productDesc" /></td>
            </tr>
            <tr>
                <td>Price :</td>
                <td><form:input path="price" /></td>
            </tr>
            <tr>
                <td>Quantity :</td>
                <td><form:input path="quantity" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="Submit"></td>
                <td><input type="reset" value="Reset" align="right"></td>
            </tr>
        </table>
    </form:form>
    <br>
    <br>
    <br>
    <table id="example" class="display" border="2" align="center">
        <tr>
            <td><B>Product ID </td>
            <td><B>Product Name </td>
            <td><B>Product Description </td>
            <td><B>Price </td>
            <td><B>Quantity </td>
        </tr>
        <c:forEach items="${prod}" var="prodlist" />
        <tr>
            <td><c:out value="${prodlist.productId}" /></td>
            <td><c:out value="${prodlist.productName}" /></td>
            <td><c:out value="${prodlist.productDesc}" /></td>
            <td><c:out value="${prodlist.price}" /></td>
            <td><c:out value="${prodlist.quantity}" /></td>
        </tr>
        <c:if test="${prodlist = null}">
            <c:out value="No records found!!" />
        </c:if>
        <c:if test="${prodlist != null }">
            <c:out value="${example.prodlist}" />
        </c:if>
    </table>
</body>
</html>

Это класс ProductController.

@Controller
public class ProductController {

    @Autowired
    private ProductService productService;

    @RequestMapping(value = "/product", method = { RequestMethod.GET, RequestMethod.POST })
    public String showProduct(@ModelAttribute("productData") ProductDTO product, BindingResult result,
            Map<String, Object> map, HttpServletRequest request) {
        System.out.println("Inside productController");
        map.put("prod", productService.getProductDetails(product));

        if ("get".equals(request.getMethod())) {
            map.put("productData", product);
            return "product";
        } else {

            productService.checkProduct(product);
            return "product";
        }
    }
}

ProductService.java это

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public void checkProduct(ProductDTO product) {

        System.out.println("Inside product repository");
        System.out.println(product.getProductId());
        System.out.println(product.getProductName());
        System.out.println(product.getProductDesc());
        System.out.println(product.getPrice());
        System.out.println(product.getQuantity());
        productRepository.checkProduct(product);
    }

    public List getProductDetails(ProductDTO prodlist) {
        List list = productRepository.getProductDetails(prodlist);
        Iterator itr = list.iterator();
        while (itr.hasNext()) {
            ProductDTO product = (ProductDTO) itr.next();
            System.out.println(product.getProductId() + "\t" + product.getProductName() + "\t"
                    + product.getProductDesc() + "\t" + product.getPrice() + "\t" + product.getQuantity());
        }
        return list;
    }
}

ProductRepository.java это

@Repository
public class ProductRepository {

    @Autowired
    private HibernateTemplate hibernateTemplate;

    public void checkProduct(ProductDTO product) {

        System.out.println("Inside product repository");
        System.out.println(product.getProductId());
        System.out.println(product.getProductName());
        System.out.println(product.getProductDesc());
        System.out.println(product.getPrice());
        System.out.println(product.getQuantity());
        hibernateTemplate.save(product);
    }

    public List getProductDetails(ProductDTO prod) {
        List list = hibernateTemplate.find("from ProductDTO");
        Iterator itr = list.iterator();
        while (itr.hasNext()) {
            ProductDTO product = (ProductDTO) itr.next();
            System.out.println(product.getProductId() + "\t" + product.getProductName() + "\t"
                    + product.getProductDesc() + "\t" + product.getPrice() + "\t" + product.getQuantity());
        }
        return list;
    }
}

1 Ответ

0 голосов
/ 21 октября 2018

Кажется, вы закрываете forEach слишком рано.Попробуйте обернуть строку таблицы в для каждого типа:

<c:forEach items="${prod}" var="prodlist">
    <tr>
        <td><c:out value="${prodlist.productId}" /></td>
        <td><c:out value="${prodlist.productName}" /></td>
        <td><c:out value="${prodlist.productDesc}" /></td>
        <td><c:out value="${prodlist.price}" /></td>
        <td><c:out value="${prodlist.quantity}" /></td>
    </tr>
</c:forEach>

Чтобы проверить пустой список, вы можете проверить следующим образом:

<c:if test="${prod.length == 0}">
    <c:out value="No records found!!" />
</c:if>

Возможно, вам понадобится проверить prod.size == 0 вместо prod.length, но один из них должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...