У меня есть главная страница, как и содержит интересы составной компонент и ссылки для ленивых нагруженных вкладок следующим образом:не может сделать элементы в другой форме из внутри JQuery-вкладок динамически загружаемой вкладка
1- страницу профиля:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="../templates/application.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:o="http://omnifaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:myapp="http://java.sun.com/jsf/composite/component"
xmlns:p="http://java.sun.com/jsf/passthrough">
<ui:define name="head">
<title>Profile</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/assets/css/jquery/jquery-ui.css" media="screen"/>
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/assets/css/override-jquery.css" media="screen"/>
<style>
li
{
outline: none !important;
}
</style>
</ui:define>
<ui:define name="right-side">
<div class="three-column right">
<myapp:interest bean="#{interestBean}" value="#{interestBean.interest}" id="interestCmp"></myapp:interest>
</div>
</ui:define>
<ui:define name="content">
<div class="tabs">
<ul>
<li><a id="tab1" href="tabs/tab1.xhtml">tab1</a></li>
<li><a id="tab2" href="tabs/tab2.xhtml">tab2</a></li>
</ul>
</div>
<script type="text/javascript">head.ready(function(){$('.tabs').tabs();});</script>
</ui:define>
</ui:composition>
2- интересы составной компонент:
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="id" />
<composite:attribute name="index" />
<composite:attribute name="value" />
<composite:attribute name="bean" />
</composite:interface>
<composite:implementation xmlns:myapp="http://java.sun.com/jsf/composite/component">
<div >
<aside class="interests">
<header class="header-w-flag icon-star">
<h1>Interests</h1>
</header>
<h:form id="interestForm">
<h:panelGroup id="showInterests" layout="block">
<ui:repeat var="interest" value="#{interestBean.getUserInterests()}" >
<div class="interest">
<div class="interest-name"><a href="">#{interest.interestName}</a>
<h:commandLink action="#{interestBean.deleteInterest(interest)}" rendered="#{permissionBean.isCurrentUser(profileBean.user)}" >
<i class="icon-delete control-icon" style="cursor:pointer;display:none;"></i>
<f:ajax render="@form" execute="@this"></f:ajax>
</h:commandLink></div>
<div class="people-grid">
<ui:repeat var="user" value="#{interestBean.getUsersByInterest(interest.id)}" varStatus="status" >
<h:panelGroup id="interestedUsers">
<a title="#{user.firstName} #{user.lastName}" href="../profile/index.xhtml?id=#{user.id}"><img src="#{applicationBean.avatarBaseURL}#{user.avatarUrl}" alt="#{user.firstName}" /></a>
</h:panelGroup>
</ui:repeat>
</div>
</div>
</ui:repeat>
</h:panelGroup>
</h:form>
</aside>
</div>
</composite:implementation>
</html>
3- код tab1:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:o="http://omnifaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:myapp="http://java.sun.com/jsf/composite/component"
xmlns:p="http://java.sun.com/jsf/passthrough">
<div id="tab1">
<!-- feed here -->
<h:panelGroup layout="block" class="posts" id="feedContainer">
<h:form id="profileFeeds">
<ui:repeat var="post" value="#{feedBean.feeds}" varStatus="status" >
<myapp:feedpost value="#{post}" index="{status.index}"></myapp:feedpost>
</ui:repeat>
<h:panelGroup layout="block" rendered="#{feedBean.feeds.size()==0}">
<div class="post blue">
<div class="post-content">
<h1>Nothing</h1>
</div>
</div>
</h:panelGroup>
<div class="post load"><h:commandLink action="#{feedBean.getMoreHomeFeeds()}" styleClass="btn btn-primary btn-small">Show more feeds
<f:ajax render=":feedContainer" ></f:ajax>
</h:commandLink></div>
</h:form>
</h:panelGroup>
</div>
</html>
4- feedpost составной компонент, который связан с tab1:
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="id" />
<composite:attribute name="index" />
<composite:attribute name="value" />
</composite:interface>
<composite:implementation xmlns:myapp="http://java.sun.com/jsf/composite/component">
<h:panelGroup layout="block" class="post">
<div class="post-content">
<h:panelGroup layout="block">
<h1><h:outputFormat value="#{cc.attrs.value.title}" /></h1>
</h:panelGroup>
tText value="#{baseBean.replaceWithHTMLBreak(cc.attrs.value.note)}" escape="false"/></p>
</h:panelGroup>
</div>
<myapp:comments value="#{cc.attrs.value}"></myapp:comments>
</h:panelGroup>
</composite:implementation>
</html>
5- комментарии составного компонента, который связан с feedpost компонента:
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="id" />
<composite:attribute name="index" />
<composite:attribute name="value" />
</composite:interface>
<composite:implementation>
<h:panelGroup layout="block" class="comments" id="feedcomments">
<div class="actions">
<h:commandLink id="addToInterestLink" value="#{msg['action.addto.interests']}" styleClass="action-like"
action="#{feedBean.addToInterests(cc.attrs.value)}">
<f:ajax execute="@this" render=":interestCmp:interestForm:showInterests"></f:ajax>
</h:commandLink>
</div>
</h:panelGroup>
</composite:implementation>
</html>
при нажатии на ссылку tab1 (ленивым загружен вкладка JQuery), который содержит комментарии композиционный компонент, который имеет ссылку на оказание интересов DIV в процентной составляющей, я получаю следующее исключение:
<f:ajax> contains an unknown id ':interestCmp:interestForm:showInterests' - cannot locate it in the context of the component addToInterestLink
Примечание: один обходной путь я нашел для выпуска заключается в добавьте содержимое tab1 статически на страницу, а не свяжите его.
, пожалуйста, сообщите, как это исправить.
Вы, кажется, отредактировали код в своем вопросе в недопустимой форме. Использование ':' в идентификаторе компонента JSF приведет только к отправке IAE. В будущих вопросах, пожалуйста, скопируйте настоящий код без изменений. В противном случае вы только вводите красные сельди и путаницу. – BalusC
@BalusC, я отправил правильный код сейчас, извините, я не понял код страницы правильно, тоже извините за смущение. Я обещаю, что больше не буду этого делать. –
Есть 2 вещи, странные с этим кодом: 1) '' не использует префикс ':', но сообщение об ошибке упоминает об этом; вы все еще показываете настоящий код? 2) Вы подразумеваете, что он отлично работает, когда вы заменяете '' на что-то более простое, например «привет»? И есть одна нечеткость: это '' составной компонент с '' и т. Д.? Вы просто называете это «композицией», а не «составной». –
BalusC