我正在处理我的课程最终项目,我正在使用 JSF 和 AJAX,但我遇到了一些错误。
目前我正在使用 JSF 2.0 和Fancybox,一个 jQuery 插件。在给定的页面中,我有一个加载我的内容的数据表。此表的每一行都有一个链接,该链接将为单击的行打开一个编辑页面。请注意,实际上打开任何新页面时,屏幕中只会出现一个模式。
因此,当用户在行中单击时,将出现“编辑页面”,但这将显示为模式(这就是我使用 Fancybox 的原因)。
以下是我执行此操作的代码:
<h:dataTable id="minhaTabela" styleClass="table table-hover" var="disciplina" value="#{disciplinaMBean.listaDisciplinas}" selection="#{disciplinaMBean.disciplinaSelecionada}" selectionMode="single" >
<h:column>
<a class="various fancybox.ajax">
<f:facet name="header">Name</f:facet>
<h:outputText value="#{disciplina.nome}" />
</a>
</h:column>
</h:dataTable>
(...)
$(".various").fancybox({
maxWidth : 400,
maxHeight : 125,
fitToView : false,
autoSize : false,
width : 400,
height : 125,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
ajax : {
type : "POST",
url : "edit.xhtml",
data : { idDisciplina : '#{disciplinaMBean.disciplinaSelecionada.id}' },
dataType: "html"
}
});
还有我的edit.xhtml(还不是动态的,用于测试):
<form role="form">
<div class="form-group">
<label for="nome">Nome:</label>
<input type="text" class="form-control adicionar" id="nome" />
<br />
<a type="button" href="#" id="excluir" class="btn btn-md btn-danger pull-left">Excluir</a>
<a type="button" href="#" id="enviar" class="btn btn-lg btn-success pull-right">Salvar</a>
<br />
</div>
</form>
当我尝试连续单击时,Fancybox 打开模式,但我收到以下错误:
如果我在 Fancybox 中删除 Ajax ......
(并将 href="edit.xhtml" 添加到我的链接)
<h:column>
<a class="various fancybox.ajax" href="edit.xhtml">
<f:facet name="header">Name</f:facet>
<h:outputText value="#{disciplina.nome}" />
</a>
</h:column>
(...)
$(".various").fancybox({
maxWidth : 400,
maxHeight : 125,
fitToView : false,
autoSize : false,
width : 400,
height : 125,
closeClick : false,
openEffect : 'none',
closeEffect : 'none'
});
我的页面加载了,但是通过这种方式,我如何将信息发送到 edit.xhtml 处理信息?抓住机会,做同样的事情是更好的方法吗?我不知道我的做法是否正确,因为我在 Google 中没有找到任何类似的教程或问题。