У меня есть 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 балла после нажатия «Рассчитать расстояние»?
Заранее спасибо