В этом ответе предполагается, что вы знаете, как использовать javascript, чтобы проверить, поддерживает ли пользователь HTML5.Вот идея.Один из способов взаимодействия javascript с управляемым компонентом JSF-сервера заключается в том, чтобы javascript вызывал событие click
для скрытого commandButton
.Итак, вот как вы это делаете.Эта командная кнопка может затем вызвать функцию на вашем компоненте поддержки, например, установить флаг для отображения определенного компонента на вашей странице.Для запроса ajax вы можете использовать PrimeFaces p:commandButton
с атрибутом update
для частичного обновления.
- У вас есть скрытая форма на вашей странице с
inputText
и p:commandButton
- Определите, поддерживает ли пользователь HTML5, используя javascript, затем вызовите событие click для
commandButton
.inputText
есть, чтобы вы могли передать флаг обратно на сервер.
Например:
<h:form style="display:none">
<h:inputText id="flag" value="#{myBean.flag}"/>
<p:commandButton id="button" actionListener="#{myBean.process}" update="..."/>
</h:form>
, чтобы ваш jQuery выглядел следующим образом
if(user is HTML5 enabled){
jQuery("#flag").val("Flag that let you know user has HTML5 enable.")
jQuery("#button").click();
}else{
//Same thing as above but passing a flag that you know user dont have HTML5 enabled
}
В вашем управляемом бине у вас будет
@ManagedBean
@RequestScoped
public class MyBean{
private String flag;
private boolean display;
//setter and getter for `flag` and `display`
public void process(){
if(flag.equals("HTML5")){
display = true;
}else{
display = false;
}
}
}