Java bad operand types for binary operator '||'

360
01 апреля 2018, 20:05

Есть код в контроллере (Spring MVC)

@RequestMapping(value = "/books", method = RequestMethod.GET)
public String books(final HttpServletRequest request, final Model model) {
    if (request.getParameter("name") || request.getParameter("publishing_house") || request.getParameter("the_year_of_publishing")) {
        final List<Book> books = bookService.booksBySearch();
    } else {
        final List<Book> books = bookService.getAll();
    }
    model.addAttribute("books", books);
    logger.debug("running in BookController.java -> books()");
    logger.info(JSON.toJSON(request.getRequestURI()));
    logger.info(JSON.toJSON(books));
    return "/book/list.jsp";
}

В итоге при компиляции получаю ошибку:

[ERROR] /C:/Users/Tim/eclipse-workspace/springMVC-mybatis-postgresql-fbcda0e11b1addcac43be8813e16b8b703022591/src/main/java/com/core/newbie/controller/BookController.java:[53,42] bad operand types for binary operator '||' first type: java.lang.String second type: java.lang.String

Почему и как выправить?

Answer 1

А чего вы ожидаете от этого request.getParameter("name") || request.getParameter("publishing_house")?

getParameter строку возвращает. Может вы хотели на null проверять?

if (request.getParameter("name") != null || request.getParameter("publishing_house") != null || request.getParameter("the_year_of_publishing") != null )

Но даже так ваш код не будет компилиться, т.к. у вас books не определена вне скопа ваших if'ов, и компилятор выдаст ошибку на этой строке model.addAttribute("books", books);.

Весь код тогда будет таким:

@RequestMapping(value = "/books", method = RequestMethod.GET)
public String books(final HttpServletRequest request, final Model model) {
    List<Book> books;
    if (request.getParameter("name") != null || request.getParameter("publishing_house") != null || request.getParameter("the_year_of_publishing") != null) {
        books = bookService.booksBySearch();
    } else {
        books = bookService.getAll();
    }
    model.addAttribute("books", books);
    logger.debug("running in BookController.java -> books()");
    logger.info(JSON.toJSON(request.getRequestURI()));
    logger.info(JSON.toJSON(books));
    return "/book/list.jsp";
}
READ ALSO
Взять данные с Item ListView

Взять данные с Item ListView

Использую для вывода данныхВ дальнейшем использую обработчик при нажатии, что-бы изменить или удалить данные, но parent

183
Выделение элементов GridView

Выделение элементов GridView

Имеется GridView в котором имеется календарьЯ например хочу при нажатии подсветить 1,4,7 число,а так же запонить эти даты

188
Как рисовать много объектов без потери производительности? Java

Как рисовать много объектов без потери производительности? Java

Всем привет, я начинающий developer пишущий разные игры и приложения на java (практикуюсь, нарабатываю навыки)Меня давно преследует проблема рисования...

231
JavaFX, изменение объектов внутри лямбды

JavaFX, изменение объектов внутри лямбды

Есть такой слушатель на слайдер, но почему я не могу изменять(переприсваивать) переменные которые существуют вне функции?

213