Доступ к сеансу после запроса - PullRequest
0 голосов
/ 30 марта 2020

У меня есть index.x html, где я могу установить 2 точки:

<h:inputText id="ax" value="#{straight.a.x}" />
<h:inputText id="ay" value="#{straight.a.y}" />
<h:inputText id="bx" value="#{straight.b.x}" />
<h:inputText id="by" value="#{straight.b.y}" />
<h:commandButton id="submit" value="Go" action="straight" />

Далее у меня есть класс Straight (ManagedBean SessionScope), который используется для определения уравнения прямой линия, основанная на двух точках, установленных пользователем:

@ManagedBean
@SessionScoped
public class Straight implements Serializable {
    private static final long serialVersionUID = 1L;
    private Point a;
    private Point b;

    @PostConstruct
    public void init() {
        a = new Point();
        b = new Point();
    }

    public String equation() {
        //returns equation
    }
    //getters and setter
}

Straight.x html выглядит следующим образом:

Points: A(#{straight.a.getX()}, #{straight.a.getY()}), B(#{straight.b.getX()}, #{straight.b.getY()})
Equation: ${straight.equation()}

<h:form class="form">
    <input type="number" step="0.001" id="cx" jsf:value="#{distance.c.x}" />
    <input type="number" step="0.001" id="cy" jsf:value="#{distance.c.y}" />
    <h:commandButton id="submit" value="Calculate distance" action="straight" />
</h:form>
Distance: #{distance.length()}

Класс расстояния (управляемый компонент, RequestScoped):

@ManagedBean
@RequestScoped
public class Distance {
    @ManagedProperty(value="#{straight}")
    private Straight straight;
    private Point c;

    public Distance(Point c, Straight straight) {
        this.c = c;
        this.straight = straight;
    }

    public Distance() {
    }

    @PostConstruct
    public void init() {
        c = new Point();
    }

    public double length() {
        //returns distance
    }
    //getters and setters
}

поэтому, когда я установил 2 точки, нажмите кнопку "go", и я получу прямую. X html с координатами этих 2 точек и уравнением прямой, проходящей через точки. Ниже у меня есть форма, где я могу установить координаты третьей точки и расстояние между линией и третьей точкой. В первый раз, когда я захожу на страницу Straight.x html, я вижу расстояние между линией и точкой (0,0) (что хорошо). Но когда я устанавливаю третью точку и нажимаю «Рассчитать расстояние», страница перезагружается и показывает неправильные координаты A и B - информация с предыдущей страницы не перемещается. Расстояние рассчитывается на основе третьей точки (хорошие координаты) и A (0,0), B (0,0) (не точки, которые я установил в начале).

Мой вопрос: как можно Я пропускаю (поддерживаю) эти 2 балла после нажатия «Рассчитать расстояние»?

Заранее спасибо

...