我想知道是否有办法将方法的返回值绑定到JSF组件中.我会更好地解释自己.假设我有这样一个类:
public class Document {
private List<Attachment> attachments;
//getter and setter here
}
Run Code Online (Sandbox Code Playgroud)
这个类通过一个名为currentDocument的属性中的注册托管bean暴露给jsf,并以这种方式用于jsf
<h:outputText value="#{myManagedBean.currentDocument.attachment.size}" />
Run Code Online (Sandbox Code Playgroud)
我知道,这是不正确的.但是这样做的正确方法是什么?我应该在Document类上创建一个属性,让我们说numberOfAttachments,并绑定到那个,或者有一种方法直接绑定方法的返回值?
我在TD上阅读了很多关于TDD和单元测试的问题和答案,但我没有找到答案:我从哪里开始?
我和团队已经完成了一些项目,其中我们采用了单元测试,用于我们的代码......但首先是代码,然后是单元测试.在开发过程的某个阶段,首先编写测试然后编写代码变得非常自然,这使我们更具TDD风格.
现在我们想进行下一步,并尝试从一开始就使用TDD开始一个新项目.这是问题......从哪里开始?当我没有代码时,这是我写的第一个测试?
让我们说,只是为了有一个思考的背景,我必须开发一个互联网应用程序,以文档为中心,有一点工作流程......还有别的东西.但是让我们从头开始:首先,我想创建一个简单的页面,列出存储在DB上的表中的所有文档(元数据)(非常简单,嗯?).这是我写的第一个测试?假设我正在使用Hibernate访问数据库...我会测试ipothetical方法getAllDocuments()吗?但是我应该使用模拟对象来替换Hibernate吗?那么我在测试什么?
我在这里有点混淆......而且getAlDocuments()可能永远不会是一个生产方法...所有的文档集合都将按照某些东西进行排序和过滤......这有意义吗?任何建议将不胜感激
编辑:
在阅读了你的答案(以及http://programmers.stackexchange.com上的类似帖子)之后,我对TDD有了更好的看法,但我仍然有一个dubt.
我总是认为TDD是关于首先进行单元测试...从未想过端到端测试.但是让我问一下:TDD说你必须编写测试并看到编译错误; 然后你创建类和方法,你得到测试失败; 然后你实现方法并通过测试.在测试失败之前,您无法编写代码; 在所有测试通过之前,你不能写另一个测试.我在这儿吗?
如何进行端到端测试作为我的第一次测试?我应该在所有层中编写所有代码,以便让测试通过.但是我会有一堆类和方法都通过我的端到端测试进行测试(我不应该把它称为集成测试吗?).这意味着我不再需要单元测试,因为我已经有一个覆盖我的代码的测试.我不能写一个已经通过的测试,这是针对TDD的实践.
请帮助我进一步了解这一步
我想问一个关于运行测试的开发环境配置的简单问题.我正在使用Eclipse Helios和Junit4,我将所有测试都放在一个单独的源文件夹中.当我运行我的测试(全部,部分或仅一个,它是相同的)时,Eclipse会自动打开控制台面板以显示正在测试的类的记录信息.
有没有办法避免这种情况并将Eclipse保留在JUnit视图(或面板)上,从而避免控制台面板在我运行测试后立即变为活动状态?我尝试关闭控制台面板,但是当我运行测试时它重新打开...
对于你来说,我有一个非常微不足道的问题jsf expert ...我正在使用JSF 2.0应用程序.说我有一个包含html部分的属性的托管bean向用户显示,我应该使用哪个面向控件直接在页面上发出该html,而不编码?
在JSF facelet页面(.xhtml)中我有这个javascript代码
<script type="text/javascript">
function navigateToDetail() {
var id = document.getElementById("idElemento").value;
alert(id);
var isPratica = document.getElementById("isPratica").value;
alert(isPratica);
var box = "#{boxCtrl.idBox}";
alert(box);
if (isPratica==true)
window.location = "DettaglioRichiesta.xhtml?id=" + id + "&box=" + box;
else
window.location = "../Richieste/DettaglioRichiesta.xhtml?id=" + id + "&box=" + box;
}
</script>
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为jfs引擎认为"&box"是相对于绑定的,它说:
Error Parsing /Box/ListaRichieste.xhtml: Error Traced[line: 20] The reference to entity "box" must end with the ';' delimiter
Run Code Online (Sandbox Code Playgroud)
我可以避免这种行为吗?
关于jsf相关的下拉选择,我在这里遇到了一个小问题.我有2个下拉选择:第一个是独立的,第二个显示结果依赖于这是代码:
<h:panelGroup id="addressPanel">
<h:outputLabel styleClass="label" value="Provincia: " />
<h:selectOneMenu onchange="updateCombos()"
value="#{indirizzoCtrl.codiceProvincia}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allProvincia}" var="c"
itemLabel="#{c.nome}" itemValue="#{c.siglaProvincia}" />
</h:selectOneMenu>
<h:outputLabel styleClass="label" value="Comune: " />
<h:selectOneMenu
value="#{indirizzoCtrl.codiceComune}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allComuni}" var="c"
itemLabel="#{c.descrizione}" itemValue="#{c.codiceComune}" />
</h:selectOneMenu>
</h:panelGrid>
</h:panelGroup>
<p:remoteCommand name="updateCombos" update="addressPanel masterForm:msg" />
<p:commandButton styleClass="commandButton" value="Save"
actionListener="#{indirizzoCtrl.save}">
</p:commandButton>
Run Code Online (Sandbox Code Playgroud)
好吧,当用户在选择了两个值后保存表单时,托管bean indirizzoCtrl(请求作用域)无法将第二个下拉列表的值映射回列表,因为没有列表.事实上,#{indirizzoCtrl.allComuni}只有在indirizzoCtrl.codiceProvincia!=null...更新模型阶段之前,才调用从数据库检索数据的getter .因此,第一次调用列表的getter时无法检索任何值,这会使更新模型阶段失败.我怎么能处理这个场景......我认为这是一个很常见的场景,所以我在这里遗漏了一些东西......
我有这个简单的Oracle语句来删除行...但我无法让它工作
delete from NPEA.tnpe00_all
where EXISTS
(select 1
from NPEA.tnpe05_doc, NPEA.tnpe00_all
where NPEA.tnpe05_doc.n_doc = NPEA.tnpe00_all.t_doc
and NPEA.tnpe05_doc.n_prt is null
and NPEA.tnpe05_doc.n_can = 4
order by n_doc)
Run Code Online (Sandbox Code Playgroud)
错误代码是
00907. 00000 - "missing right parenthesis"
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
我正在编写一个函数来在文件上生成SHA256哈希.这是我使用的代码
public string ComputeHash(Byte[] inputBytes)
{
Byte[] hashedBytes = new SHA256Managed().ComputeHash(inputBytes);
return BitConverter.ToString(hashedBytes);
}
Run Code Online (Sandbox Code Playgroud)
非常简单.事实上,根据我尝试的一些工具,产生的散列似乎没有效果,实际上,它与我见过的任何其他sha256字符串不同(甚至不是256字节).例如,一个结果是
12-10-B2-60-24-75-11-95-B5-F7-F6-64-39-C3-22-9F-E7-E7-D4-13-69-18-99-C5-A7-C5-EC-2F-E2-D6-09-19
Run Code Online (Sandbox Code Playgroud)
即使我修剪掉每一个字符,一切都是大写的,而我总是看到小写的代表.(这也是一个问题)我想知道我是否以正确的方式使用该库.请帮忙