假设我有一个看起来像这样的函数:
public void saveBooking(/* some inputs */) {
//save into database
}
Run Code Online (Sandbox Code Playgroud)
在保存到数据库之前,我必须进行各种验证.我在主程序中可以做的是这样的:
//do all the validations and do any necessary handling. Then...
saveBooking(/*inputs*/);
Run Code Online (Sandbox Code Playgroud)
有了这个,我确信在保存到数据库之前,所有数据都必须通过所需的所有验证.但是,这意味着该功能saveBooking()非常依赖于验证方法.每次我想打电话saveBooking(),我都要确保不要忘记给他们打电话.
或者,我可以将所有验证放在函数本身中,这样我所要做的就是调用方法,一切都得到了解决.但是,为了独立处理所有错误,我必须使函数抛出异常并捕获主程序.它应该看起来像这样:
public void saveBooking(/* some inputs */) /* throws various exceptions */ {
//various validations
//save into database
}
//...and in the main program...
try{
saveBooking(/*inputs*/);
}
catch(MyException1 e1){
//do something
}
catch(MyException2 e2){
//do something
}
Run Code Online (Sandbox Code Playgroud)
这也意味着我必须自己创建多个例外.好消息是我不必担心我必须提前做出哪些验证.
有了这些,我不确定哪一个是最好的代码设计.我个人更喜欢第一种方法,它更具可读性,但它相互依赖太多而且当我需要在很多地方使用它时它会变得更糟.请指教!
我创建了一个名为HomeViewController继承自的自定义视图控制器UIViewController.在主应用程序委托中,我通过调用[window addSubview:homeViewController.view]内部函数来显示它applicationDidFinishLaunching.是的,一切正常.
现在我在HomeViewControllerxib文件中添加一个按钮.当我点击它时,我希望window删除当前视图并添加另一个视图navigationController.我在里面创建一个函数HomeViewController.m并链接到按钮,但我不知道如何window从那里访问该属性.window是主app代理中的局部变量,按钮单击处理程序在里面HomeViewController.我正在考虑做与上面类似的事情,即添加navigationController.view为子视图window.
抱歉! 我对这个iphone应用程序开发很新.我并没有真正了解应用程序流程应该如何.也许我的项目结构出了问题?
我正在尝试在我的项目中配置Spring和Hibernate,并且我在bean验证时遇到问题.我的班级路径中有这个jar:
hibernate-validator-4.2.0.Final.jar
我有一些测试来查询数据库中的一些数据,它工作正常.现在我将这个jar添加到我的类路径中:
validation-api-1.0.0.GA.jar
当我再次尝试运行测试时,我得到了这一堆异常:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [beans.xml]: Cannot resolve reference to bean …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的servlet:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
validateInput(param1, param2, request, response);
//if nothing's wrong with the input, do this and that
}
private void validateInput(String param1, String param2, HttpServletRequest request, HttpServletResponse response) throws IOException{
boolean fail = false;
//validate input blah blah blah
if (fail){
PrintWriter out = response.getWriter();
out.write("invalid input");
//end process or servlet
}
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,我想传递param1并param2运行validateInput()以验证输入是否有效.如果输入无效,请写回消息然后结束该过程.我的问题是如何结束这个过程?我所知道的,调用return;在doPost()将结束的过程,但我想,以避免返回任何值 …
java ×3
code-design ×1
hibernate ×1
iphone ×1
java-ee ×1
jsp ×1
objective-c ×1
servlets ×1
spring ×1