У меня есть страница, которая принимает параметры запроса для места, а затем генерирует информацию,
например, http://example.com/xxx/weather.jsf?place=california
.
Цель этого состоит в том, чтобы позволить пользователю добавить ссылку в закладки.
В weather.jsf есть два выходных текста и командная ссылка:
Humidity : <ice:outputText value="#{weatherBean.humidity}"/>
Visibility : <ice:outputText value="#{weatherBean.visibility}"/>
<ice:commandLink id="likeButton"
value="Like"
actionListener="#{weatherBean.doLike}" />
В управляемом Bean:
@ManagedBean(name="weatherBean")
@RequestScoped
public class WeatherBean
{
String humidity;
String visibility;
int numLike;
@PostConstruct
public void init()
{
System.out.println("init called");
HttpServletRequest request= (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String place = request.getParameter("place");
setHumidity(WeatherDao.getHumidity(place));
setVisibility(WeatherDao.getVisibility(place));
setNumLike(GeneralDao.getNumLike());
}
public void doLike(ActionEvent event)
{
System.out.println("doLike called");
GeneralDao.addNumberLike();
}
}
Хорошо, страница сгенерирована отлично.
Однако, когда я нажимаю doLike
commandLink,
сначала всегда вызывается метод init
, затем вызывается метод doLike
.
Поскольку параметр запроса пуст, все остальные значения сбрасываются.
Есть ли способ предотвратить обновление страницы или вызов метода init
?
Я попробовал частичную передачу или немедленную, но не повезло.