2013-05-24 3 views
0

Я не думаю, что это проблема JSF с AJAX с формой в форме, потому что у меня есть только 1 форма.CommandLink с JSF Ajax требуется 2 клика

Я посмотрел на темы о Ajax и JSF-рендеринге, и я попробовал несколько решений без везения.

Кто-нибудь видел, что, вероятно, очевидно, что мне не хватает :-)

Благодарности

index.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

<h:head> 
    <title>Manual</title> 
    <h:outputStylesheet name="style.css" library="css" /> 
</h:head> 
<h:body> 
    <div id="page"> 
     <h:form id="myform"> 
     <div class="header" > 
      <h:graphicImage library="img" name="Logo.gif" alt="Logo"/> 
      <h1>Manual</h1> 
     </div> 

      <div class="menu"> 
     </div> 

     <div class="nav"> 

      <h:outputText value="Navigation 1"/><br/> 
      <p:commandLink value="Chapter100" action="#{contentBean.BuildContent}" update="content" > 
       <f:ajax process="@this" render=":content" /> 
      </p:commandLink> 

        <!-- Add NewLine between links --> 
        <h:outputText value="&#10;" /> 
      </div> 
      </h:form> 
      <div class="mycontent"> 
       <h:panelGroup id="content"> 
        <h:outputText value="#{contentBean.content}" > 
      </h:outputText> 
       </h:panelGroup> 
      </div> 
     </div> 
    </h:body> 
</html> 

Bean

@ManagedBean(name="contentBean") 
@ViewScoped 
public class ContentBean implements Serializable{ 
    private List<String> lTocInfo = new ArrayList(); 

    private String content = "Steve Newer 002 Content"; 

    public String getContent() 
    { 
     return content; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

    public void BuildContent() throws Exception 
    { 
     this.setContent("Steve made it back from database"); 
    }  
} 
+0

только думаю, я считаю неправильным является '<е: Аякса процесса =«@ это» render = ": content" /> '. Вы в основном смешиваете JSF и PF: JSF '' имеет 'execute' и' render', PF '' имеет 'process' и' update'. Кроме того, PF имеет свою собственную структуру AJAX, предназначенную для использования с ее компонентами, поэтому в этом случае вы должны либо использовать '', либо использовать ярлыки' process' и 'update' атрибутов' '. – skuntsel

ответ

1

Не используйте кнопку <f:ajax> внутри кнопки «Поверхности», поскольку по умолчанию это запрос ajax (если вы не хотите отключить запрос ajax, вы можете установить атрибут ajax на false). Вы можете использовать атрибуты обновления и процесса.

0

Я считаю, что решение о том, Вы можете также использовать в AJAX следующий код в Ссылка:

<p:commandLink value="Chapter100" action="#{contentBean.BuildContent}"> 
       <f:ajax execute="@form" event="blur" render="content" /> 
</p:commandLink>