Приложение корзины покупок с использованием Java

Я работаю над вызовом Java. Я хочу создать приложение, отображающее список книг в виде элемента h:selectOneRadio. Когда пользователь отправляет форму, сохраните выбор пользователя в управляемом компоненте @SessionScoped. Разрешить пользователю вернуться к списку книг и сделать дополнительный выбор. Укажите ссылку для просмотра корзины. На странице корзины отобразите список сделанных пользователем выборов, цену каждой книги и общее количество всех книг в корзине.

Это то, что у меня есть до сих пор:

SelectionsBean.java

package sessiontracking;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean( name = "selectionsBean" )
@SessionScoped
public class SelectionsBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private final Map<String, Double> pricesMap;

    private List<String> selections;

    public SelectionsBean() {
        pricesMap = new HashMap<>();
        pricesMap.put("Java How to Program", 139.95);
        pricesMap.put("C++ How to Program", 119.95);
        pricesMap.put("iPhone for Programmers: An App-Driven Approach", 49.95);
        pricesMap.put("Android for Programmers: An App-Driven Approach", 49.95);

        // initialize selections list
        selections = new ArrayList<>();
    }

    public void addToCart(String selection) {
        selections.add(selection);
    }

    public void removeFromCart(String selection) {
        selections.remove(selection);
    }

    public double getTotalPrice() {
        double totalPrice = 0.0;
        for (String selection : selections) {
            totalPrice += pricesMap.get(selection);
        }
        return totalPrice;
    }

    public List<String> getSelections() {
        return selections;
    }

    public void setSelections(List<String> selections) {
        this.selections = selections;
  
}


index.html

<?xml version='1.0' encoding='UTF-8' ?>
<!-- index.xhtml -->
<!-- Allow the user to select a book -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:head>
<title>Book Selection Page</title>
</h:head>
<h:body>
<h1>Welcome to the Bookstore!</h1>
<p>You have selected #{selectionsBean.Size} book(s).
</p>
<h3>Select a Book and Press Submit</h3>
<h:form>
<h:selectOneRadio id = "bookSelectOneRadio" required = "true"
requiredMessage = "Please choose a book, then press Submit"
value = "#{selectionsBean.selectedBook}">
<f:selectItem itemValue = "java" itemLabel = "Java How to Program"/>
<f:selectItem itemValue = "cpp" itemLabel = "C++ How to Program"/>
<f:selectItem itemValue = "iphone"
itemLabel = "iPhone for Programmers: An App-Driven Approach"/>
<f:selectItem itemValue = "android"
itemLabel = "Android for Programmers: An App-Driven Approach"/>
</h:selectOneRadio>
<p><h:commandButton value = "Submit"/></p>
</h:form>
<p><h:outputLink value = "cart.xhtml">
Click here to view your shopping cart
</h:outputLink></p>
</h:body>
</html>

cart.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!-- cart.xhtml -->
<!-- Display the user's shopping cart -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:head>
<title>Shopping Cart</title>
</h:head>
<h:body>
<h1>Shopping Cart</h1>
<h:dataTable value = "#{cartBean.cart}" var = "item">
<h:column>
<f:facet name = "header">Book Title</f:facet>
#{item.title}
</h:column>
<h:column>
<f:facet name = "header">Price</f:facet>
#{item.price}
</h:column>
</h:dataTable>
<p>Total price: #{cartBean.totalPrice}</p>
<p><h:outputLink value = "index.xhtml">
Click here to continue shopping
</h:outputLink></p>
</h:body>
</html>

Всякий раз, когда мне нужно скомпилировать эту ошибку:

/index.xhtml: класс sessiontracking.SelectionsBean не имеет свойства Size.

Я как бы застрял и не вижу в коде, как решить.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем index.html оскорбительная строка:

<p>You have selected #{selectionsBean.Size} book(s).

selectionsBean.Size выдаст ошибку, потому что в вашем классе SelectionsBean не определено свойство Size.

Глядя на предложение, я предполагаю, что вы пытаетесь показать количество выборов, сделанных клиентом, поэтому вместо этого используйте:

<p>You have selected #{selectionsBean.selections.size()} book(s).

Почему это сработало? Что ж, в вашем классе SelectionsBean вы определили это свойство под названием «выборки»:

private List<String> selections;

«выборки» — это тип списка, который имеет встроенные методы, такие как Size(), которые возвращают количество элементов в этом списке, поэтому вы можете использовать это. Обязательно проверьте наличие нулей, потому что ваша переменная selections инициализируется только в вашем конструкторе SelectionsBean().

Внесение этих изменений дает мне еще одну ошибку: метод не найден: класс java.util.ArrayList.selectedBook()

julio11 28.07.2023 06:03

Опять же, как и в случае с вашей первой ошибкой, в вашем классе нет метода "SelectedBook()". Оскорбительная линия value = "#{selectionsBean.selectedBook}"> У вас их две.

TP95 28.07.2023 06:12

Спасибо! Все было исправлено. Теперь, когда я запускаю код и появляется веб-приложение, когда я выбираю книгу и отправляю сообщение об ошибке, которое я получаю: значение параметра «Ошибка преобразования» «java» для «нулевого преобразователя».

julio11 28.07.2023 06:54

любые советы о том, как очистить значение параметра «Ошибка преобразования» «java» для «нулевого преобразователя».

julio11 29.07.2023 01:57

Другие вопросы по теме