У меня странная ситуация.У меня есть приложение jsf 2.0, со страницами шаблонов.в заголовке у меня есть несколько ссылок с h: link, чтобы сохранить закладку url, и h: commandLink, который я использую для входа и выхода .. проблема в том, что когда я перехожу на определенную страницу через h: link, пусть URL становится bla.jsf? uName = dino, тогда, когда я нахожусь в bla.jsf? uName = dino, я нажимаю кнопку выхода, которая должна привести меня к signout.jsf, не будет работать.вместо этого я перехожу на страницу bla.jsf без? uName = dino.
У меня нет вложенной формы h: и мне все кажется нормальным.Есть ли какие-либо предположения, почему он ведет себя так?
Я уверен, что вы спрашиваете, есть ли у меня h: form на h: commandLink.да, у меня тоже есть. Вот мой код:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<div class="floatRight">
<h:form id="firstFormHeader" prependId="false">
<p:autoComplete id="searchInputId" size="40" style="z-index: 20;" value="#{autoComplete.text}" completeMethod="#{autoComplete.complete}"/>
<h:commandButton value="#{label.search}" action="#{autoComplete.getSearchedVideo}" />
<p:watermark for="searchInputId" value="#{label.search}" />
</h:form>
</div>
<div style="z-index: 1;" id="topsection">
<div style="position:relative; bottom:-51px;">
<div id="menu" style="height:37px;" class="title ui-widget-header">
<h:panelGrid border="0" columns="2" style="float: left;">
<h:column>
<h:panelGrid columns="2">
<h:column>
<h:form id="secondFormHeader" prependId="false" >
<h:selectOneMenu id="videoGenereHeaderId" value="#{homePageVideoLoader.videoCategory}" required="true" onchange="submit()" valueChangeListener="#{homePageVideoLoader.getSelectedCatagoryList}">
<f:selectItem id="item0" itemLabel="#{select.category}" itemValue="" />
<f:selectItem id="item1" itemLabel="#{select.animation}" itemValue="23" />
<f:selectItem id="item2" itemLabel="#{select.autos}" itemValue="15" />
<f:selectItem id="item3" itemLabel="#{select.comedy}" itemValue="10" />
<f:selectItem id="item4" itemLabel="#{select.documentary}" itemValue="19" />
<f:selectItem id="item5" itemLabel="#{select.drama}" itemValue="4" />
<f:selectItem id="item6" itemLabel="#{select.education}" itemValue="16" />
<f:selectItem id="item7" itemLabel="#{select.hiphop}" itemValue="5" />
<f:selectItem id="item8" itemLabel="#{select.guragigna}" itemValue="12" />
<f:selectItem id="item9" itemLabel="#{select.news}" itemValue="6" />
<f:selectItem id="item10" itemLabel="#{select.oldies}" itemValue="7" />
<f:selectItem id="item11" itemLabel="#{select.reggae}" itemValue="8" />
<f:selectItem id="item12" itemLabel="#{select.harari}" itemValue="13" />
<f:selectItem id="item13" itemLabel="#{select.oromigna}}" itemValue="14" />
<!-- <f:selectItem id="item7" itemLabel="#{select.entertainment}" itemValue="ent" />
<f:selectItem id="item8" itemLabel="#{select.gaming}" itemValue="gam" />
<f:selectItem id="item9" itemLabel="#{select.health}" itemValue="hea" />
<f:selectItem id="item10" itemLabel="#{select.howto}" itemValue="how" /> -->
<f:selectItem id="item14" itemLabel="#{select.music}" itemValue="3" />
<f:selectItem id="item15" itemLabel="#{select.politics}" itemValue="18" />
<!-- <f:selectItem id="item13" itemLabel="#{select.nonprofit}" itemValue="non" />
<f:selectItem id="item14" itemLabel="#{select.blog}" itemValue="blo" />
<f:selectItem id="item15" itemLabel="#{select.animals}" itemValue="anm" />
<f:selectItem id="item16" itemLabel="#{select.science}" itemValue="sci" />
<f:selectItem id="item17" itemLabel="#{select.sport}" itemValue="spo" />
<f:selectItem id="item18" itemLabel="#{select.travel}" itemValue="tra" /> -->
</h:selectOneMenu>
</h:form>
</h:column>
<h:column>
<h:outputText rendered="#{userAuthentication.userLogged and userAuthentication.user.usersValid}" value="#{label.hello} "/>
<h:link rendered="#{userAuthentication.userLogged and userAuthentication.user.usersValid}" value="#{userAuthentication.user.usersFirst}" outcome="userhome?uName=#{userAuthentication.user.usersUname}">
</h:link>
</h:column>
</h:panelGrid>
</h:column>
</h:panelGrid>
<h:panelGrid border="0" columns="2" styleClass="menuPostion">
<h:column>
<h:link outcome="home" value="#{label.home}" /> |
<h:link outcome="upload" value="#{label.upload}" /> |
<h:form id="thridFormHeader" prependId="false" >
<h:commandLink rendered="#{userAuthentication.userLogged}" value="#{label.signout}" action="#{userAuthentication.doSignOut}" immediate="true"/>
</h:form>
<h:link rendered="#{!userAuthentication.userLogged}" value="#{label.createAccount}" outcome="registration" />
<h:outputText rendered="#{!userAuthentication.userLogged}" value=" | "/>
<h:link rendered="#{!userAuthentication.userLogged}" value="#{label.signin}" outcome="signin" />
</h:column>
<h:column>
<h:form prependId="false" id="languageForm">
<h:selectOneMenu value="#{language.localeCode}" onchange="submit()"
valueChangeListener="#{language.countryLocaleCodeChanged}">
<f:selectItems value="#{language.countriesInMap}" />
</h:selectOneMenu>
</h:form>
</h:column>
</h:panelGrid>
</div>
</div>
</div>
</ui:composition>
Второй <h:form>
- тот, который не работает.
Обновление : сорри не работает.он даже не собирается использовать метод doSignOut .. как только я попадаю на страницу bla.jsf? uName = dino и вижу исходный код ссылки выхода, он показывает мне
<form id="j_idt31" enctype="application/x-www-form-urlencoded" action="/myapp/content/bla.jsf" method="post" name="j_idt31" target="">
...
и, очевидно, bla.jsf выдает мне сообщение об ошибке, потому что оно ожидает, чтобы значение uName имело значение.почему так?это ошибка?
Кроме того, вы могли заметить, что у меня есть h: selectOneMenu, который отправляет данные в бин при изменении значения, но как только я нахожусь на bla.jsf? uName = dino и пытаюсьизмените значение h: selectOneMenu, оно не будет работать, потому что оно по какой-то причине не перенаправлено на bean-компонент, поэтому h: commandLink все же h: link (s) работают нормально .. как я могу решить это BalusC .. Большое спасибоза то, что нашли время и ответили кстати