У меня есть окно, в котором пользователь может искать все автомобили в базе данных и редактировать детали автомобиля, когда пользователь нажимает кнопку редактирования (код ниже) на данном автомобиле, вызывается следующий JavaScript, чтобы открыть Новое окно:
<!--EDIT BUTTON -->
<h:commandLink value=""
onclick="return CarEditCrud(this);" title="Edit Car">
<t:graphicImage rendered="true" value="/imgs/edit.gif"
styleClass="edit" />
<f:param value="#{car.carPK}" name="carCode" />
</h:commandLink>
<!--FUNCTION TO OPEN NEW WINDOW TO EDIT CAR DETAIL -->
function CarEditCrud(val) {
....
window.open("EditCarCrud.faces?carPK=" + pk);
}
Таким образом, открывается новое окно с URL-адресом localhost:80/jsp/EditCarCrud.faces?carPK=" + pk
(ПРИМЕЧАНИЕ: PK будет числом, подобным 935533)
и в конструкторе EditCarCrud Backbean я делаю следующее, чтобы получить информацию об автомобиле и заполнить поля:
Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String code = (String) requestMap.get("carCode");
Это все хорошо. Проблема в том, что у Backbean есть область действия Request
, когда пользователь нажимает Submit, я теряю всю эту информацию (carCode), поэтому URL теперь localhost:80/jsp/EditCarCrud.faces
.
UPDATE:
Кроме того, есть selectOneItem
, который имеет
....
valueChangeListener="#{carEditCurd.countrycodechange}"
onchange="submit()"
Есть ли способ сохранить код URL в URL-адресе, как это было при первоначальном открытии окна с PK в URL-адресе?