JSF получить запрос параметров внутри бина - PullRequest
0 голосов
/ 13 мая 2018

я знаю, что это обсуждалось ранее, но созданный мной пример не работает.

bean:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.*;

import java.io.Serializable;
import java.util.Map;

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String submit() {
    FacesContext fc = FacesContext.getCurrentInstance();
    Map<String,String> params = 
            fc.getExternalContext().getRequestParameterMap();
    System.out.println("params" + params);

        String country = params.get("country");
        System.out.println("country:" + country);

    return "welcome";
}
}

и это страница:

</h:head>
<h:body>
    <h:outputScript library="js" name="common.js" />
    <!--  <h:outputScript library="js" name="websocket.js" /> -->
<h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
<h:form>
    <h:inputText value="#{helloBean.name}"></h:inputText>
    <h:commandButton value="Welcome Me"  action="#{helloBean.submit}">    </h:commandButton> 
</h:form>



</h:body>
</html>

когда я вызываю страницу следующим образом: localhost: 8080 / JavaServerFaces2 / hello.xhtml? Country = 123

и нажмите кнопку, я ожидаю, что метод submit напечатает значение страны в консоли,но он печатает:

2018-05-13T17:06:48.872+0200|Info: params{j_idt7=j_idt7, j_idt7:j_idt8=,    j_idt7:j_idt9=Welcome Me, javax.faces.ViewState=-   4186994023180961740:1040096002697043710}
2018-05-13T17:06:48.872+0200|Info: country:null

почему?

ps с нетерпением ждет новой возможности для вставки кода, я уверен, что это будет здорово.

1 Ответ

0 голосов
/ 13 мая 2018

изменение формы в .xhtml на это:

<h:form>
    <h:inputText value="#{helloBean.name}"></h:inputText>
    <h:commandButton value="Welcome Me"  action="#{helloBean.submit}"> 
    <f:param name="country" value="#{param.country}" />
    </h:commandButton>
</h:form>

и параметр запроса сохраняется с первого просмотра страницы, и он отображается в консоли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...