我有一个简单的属性的setter方法,null不适合这个特定的属性.我总是在这种情况下被撕裂:我应该扔一个IllegalArgumentException,还是一个NullPointerException?从javadocs看,两者似乎都合适.有某种理解标准吗?或者这只是你应该做的任何事情之一,而且两者都是正确的?
java null exception nullpointerexception illegalargumentexception
在这一行:
@Html.ActionLink("Reply", "BlogReplyCommentAdd", "Blog",
new { blogPostId = blogPostId, replyblogPostmodel = Model,
captchaValid = Model.AddNewComment.DisplayCaptcha })
Run Code Online (Sandbox Code Playgroud)
我在blogPostId上遇到以下运行时错误:
参数字典包含参数'blogPostId'的非可空类型'System.Int32'的空条目,用于方法'System.Web.Mvc.ActionResult BlogReplyCommentAdd(Int32,Nop.Web.Models.Blogs.BlogPostModel,Boolean)'in 'Nop.Web.Controllers.BlogController'.可选参数必须是引用类型,可空类型,或者声明为可选参数.参数名称:参数
我已经为此分配了一个值,例如
@{
var blogPostId = Model.Id;
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
public ActionResult BlogReplyCommentAdd(int blogPostId, BlogPostModel model, bool captchaValid)
{}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?请举个例子.
我试图在单击表单提交按钮时使用Jquery触发一个函数,但该函数需要在实际提交表单之前触发.
我试图在提交时将一些div标签属性复制到隐藏文本字段中,然后提交表单.
我已设法使用鼠标悬停功能(当提交按钮悬停时)使其工作,但这不适用于使用触摸的移动设备.
$("#create-card-process.design #submit").on("mouseover", function () {
var textStyleCSS = $("#cover-text").attr('style');
var textbackgroundCSS = $("#cover-text-wrapper").attr('style');
$("#cover_text_css").val(textStyleCSS);
$("#cover_text_background_css").val(textbackgroundCSS);
});
Run Code Online (Sandbox Code Playgroud)
我使用.submit函数,但是这些值不会保存在字段中,因为函数在提交表单时触发,而不是之前触发.
非常感谢
这个缩写词中第一个字母的设计模式是单一责任原则.这是一个引用:
单一责任原则规定每个对象应该承担单一责任,并且该责任应该由班级完全封装.
在我们开始编码之前,这很简单明了.假设我们有一个具有明确定义的单一责任的类.要序列化类实例,我们需要为该类添加特殊的属性.所以现在班上有另一个责任.这不违反SRP吗?
让我们看另一个例子 - 接口实现.当我们实现接口时,我们只需添加其他职责,比如处理其资源或比较其实例或其他任何内容.
所以我的问题.是否有可能严格遵守SRP?怎么做到呢?
给出这样一个清单:
List<int> intList = new List<int>();
intList.Add(5);
intList.Add(10);
intList.Add(15);
intList.Add(46);
Run Code Online (Sandbox Code Playgroud)
你如何获得列表中最大元素的索引?在这种情况下,它在索引3处.
编辑:遗憾的是标准LINQ没有提供这些功能.
我正在阅读Stroustrup的C++(3ed,1997),看看他是如何实现RAII的,在第365页我发现了这个:
class File_ptr{
FILE* p;
public:
File_ptr(const char* n, const char* a){p = fopen(n, a);}
File_ptr(FILE* pp) { p = pp; }
~File_ptr() {fclose(p);}
operator FILE* () {return p;}
};
Run Code Online (Sandbox Code Playgroud)
构造函数和析构函数的实现是显而易见的,并且符合RAII惯用法,但我不明白他为什么使用它operator FILE* () {return p;}.
这将导致以File_ptr下列方式使用:
FILE* p = File_ptr("myfile.txt", "r");
Run Code Online (Sandbox Code Playgroud)
结果是封闭的p,在这种情况下在语义上是不合适的.此外,如果File_ptr要用作RAII,则此运算符允许它像示例中那样被滥用.或者我错过了什么?
我认为对于像我这样的所有初学者来说这是一个非常普遍的问题.但我找不到解决方案.然而.
文件persistence.xml位于src/META-INF/persistence.xml中
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="jobs">
<!-- provedor/implementacao do JPA -->
<provider>org.hibernate.ejb.HibernatePersistenceProvider</provider>
<!-- entidade mapeada -->
<class>
br.com.caelum.tarefas.modelo.Job
</class>
<properties>
<!-- dados da conexao -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/fj21" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<!-- propriedades do hibernate -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<!-- atualiza o banco, gera as tabelas se for preciso -->
<property name="hibernate.hbm2ddl.auto" value="update" /> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个将文件内容上传到服务器的应用程序.
要将文件上传到服务器,我使用的是"QNetworkAccessManager"类.由于它以异步方式工作,我通过使用QEventLoop将其更改为以同步方式工作.
Class FileTransfer
{
Public :
QNetworkAccessManager mNetworkManager;
Void Upload(QNetworkRequest request, QIODevice *data)
{
responce = mNetworkManager.put(request, data);
EventLoop.exec();
ReadResponce(responce);
}
Void Stop()
{
responce ->close();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的示例应用程序中,我有2个窗口.第一个选择文件,第二个显示进度.
当用户在第一个窗口中单击上传按钮时,将显示第二个窗口,然后我创建FileTransfer对象并开始上传.
当用户关闭表单时上传文件,然后在窗口的析构函数中,我调用" FileTransfer " 的停止,然后删除' FileTransfer '对象.
但是这里的Upload()函数还没有完成,所以它会崩溃.
请帮助我:如何等待'stop() '函数,直到Upload()函数完成
我想要的是EOF通过从控制台读取命令行键入Ctrl+ 来达到.以下代码执行此操作.但问题是,它在达成后发出.有没有办法跳过这个例外?或者更准确地说,什么是达到适当的方式与从控制台读取?zBufferedReaderNullPointerExceptionEOFEOFBufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class EOF {
public static void main(String args[]) {
String s = "";
String EOF = "^z";
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
try {
while (!s.equals(EOF)) {
s = read.readLine();
}
} catch (IOException e) {}
}
}
Run Code Online (Sandbox Code Playgroud) 所以我已经了解到transientJava 中的关键字意味着实体不会持久存在,并且@TransientJPA 中的注释意味着不会将字段持久保存到数据库中.但是,当@Transient应用于方法而不是变量时,它意味着什么?
这是我在代码中找到它的地方:
@Transient
public boolean getTabFoo() {
if ((this.viewFoo1 != ACCESS_NONE)
|| (this.viewFoo2 != ACCESS_NONE) || (this.viewFoo3 != ACCESS_NONE)
|| (this.getViewFoo4() != ACCESS_NONE)) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)