我有一个注释的实体@Entity.
如果我负责创建CREATE TABLE脚本,为什么我应该指定@Column( nullable = false )何时可以使用NOT NULL关键字在数据库中创建列?是否有任何示例显示在字段中使用此属性的好处?
我有一个可能包含任何unicode字符的变量字符串.其中一个unicode字符是汉.
The thing is that this "han" character has "".length() == 2但是作为单个字符写在字符串中.
考虑下面的代码,我如何迭代所有字符并比较每个字符,同时考虑它可能包含一个长度大于1的字符的事实?
for ( int i = 0; i < string.length(); i++ ) {
char character = string.charAt( i );
if ( character == '' ) {
// Fail, it interprets as 2 chars =/
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这个问题不重复.这将询问如何迭代字符串的每个字符,同时考虑包含的.length() > 1字符(字符不是作为char类型而是作为书写符号的表示).这个问题不需要先前知道如何迭代Java String的unicode代码点,尽管提到的答案也可能是正确的.
我正在使用权限模型,我有一张桌子user_permissions.此表将包含一个或多个具有特定bigint的列.我将使用每个十进制数的位来与某些权限规则进行比较(位位置将是权限规则,值将是规则的条件active或not active).
这种方法的问题在于,当使用诸如bigint之类的数字时,我的位数有限.
在这种情况下,我可以在跨数据库环境中使用的最佳列类型是什么?
这些标签代表了我的目标,因此我们赞赏与这些技术相关的任何其他解决方案.
我当时想用@Lob注释来存储大数据,这是最佳做法吗?
更新:user_permission表以1:1的关系扩展用户,并具有bigint字段,如bin_create,bin_read,bin_update,bin_delete,它将二进制数据保存为十进制数字.
澄清问题:我正在考虑使用按位运算符比较权限.因此,假设我有一个权限值为10(1010)的用户,以及需要13(1101)的操作.所以10&13 == 8(1000) - >用户有一个权限匹配操作所需的权限,所以我可以允许或拒绝(由应用程序规则定义哪个).但是使用这种方法我可以使用有限数量的位(假设我增加了要考虑的权限,因此数字也会增加).最大bigint值是~9223372036854775807,这给了我二进制111111111111111111111111111111111111111111111111111111111111111,每个字段有~60个块和许可可能性.那么在这种情况下我可以使用哪种最好的列类型在跨数据库环境中工作以存储大量的二进制块并且可以在java中使用按位运算符?
我有一个过滤器,我在dinamically映射servlet类:
@Override
public void init( FilterConfig filterConfig ) throws ServletException {
servletContext = filterConfig.getServletContext();
File directory = getConventionDirectory();
FileSystemInspector fileInspector = new FileSystemInspector();
Set<ActionInfoData> actions = fileInspector.getActions( directory );
for ( ActionInfoData action : actions ) {
servletContext
.addServlet( action.getServletName(), action.getClassName() )
.addMapping( action.getServletMapping() );
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我访问给定的映射时,不会注入EJB.
@EJB
private I18nManager i18nManager;
@Override
protected void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException {
I18nManager i18n = i18nManager; //null
}
Run Code Online (Sandbox Code Playgroud)
如果我在web.xml中手动创建映射,则给定的EJB正在该servlet中工作.它让我想知道我在运行时注册servlet的事实是否将这些servlet视为托管.
如果是这种情况,将EJB注入我的servlet的正确方法是什么,而不改变它们通过过滤器进行dinamically注册的方式?
通过JNDI是注入我的EJB的唯一方法吗?
编辑1:我试图ServletContextListener …
JSP:
<!DOCTYPE html>
<form action="/{insert your context here}/p/hello" method="post" enctype="multipart/form-data">
<input type="file" name="data">
<button>Go</button>
</form>
Run Code Online (Sandbox Code Playgroud)
Servlet的:
@WebServlet
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1;
@Override
protected void doPost( HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException {
if ( request.getPart( "data" ) != null ) {
response.getWriter().print( "It worked\n\n" );
} else {
response.getWriter().print( "IT IS NOT WORKING!\n\n" );
}
}
}
Run Code Online (Sandbox Code Playgroud)
过滤
@WebFilter( filterName = "hello" )
public class HelloFilter implements Filter { …Run Code Online (Sandbox Code Playgroud) 当我在JBoss中执行liquibase时,我得到以下WARN,但所有内容都正确更新:
12:32:01,499 WARN [org.jboss.modules] (ServerService Thread Pool -- 49) Failed to define class liquibase.sdk.watch.WatchCommand$DynamicContentHandler in Module "deployment.WebStories.war:main" from Service Module Loader: java.lang.LinkageError: Failed to link liquibase/sdk/watch/WatchCommand$DynamicContentHandler (Module "deployment.WebStories.war:main" from Service Module Loader)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:407) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:254) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.Module.loadModuleClass(Module.java:518) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1]
at liquibase.servicelocator.DefaultPackageScanClassResolver.loadClass(DefaultPackageScanClassResolver.java:358) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.DefaultPackageScanClassResolver.loadImplementationsInJar(DefaultPackageScanClassResolver.java:406) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.DefaultPackageScanClassResolver.findAllClasses(DefaultPackageScanClassResolver.java:226) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.DefaultPackageScanClassResolver.find(DefaultPackageScanClassResolver.java:116) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.DefaultPackageScanClassResolver.findImplementations(DefaultPackageScanClassResolver.java:84) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.ServiceLocator.findClassesImpl(ServiceLocator.java:202) [liquibase-core-3.2.2.jar:]
at liquibase.servicelocator.ServiceLocator.findClasses(ServiceLocator.java:177) [liquibase-core-3.2.2.jar:] …Run Code Online (Sandbox Code Playgroud) 给定这个 HTML:
<div>
<button>Test1</button>
<button>Test2</button>
</div>
Run Code Online (Sandbox Code Playgroud)
还有这个样式表:
button {
border: 1px solid #EEE;
float: left;
}
button:focus {
outline: thin dotted;
}
Run Code Online (Sandbox Code Playgroud)
SSCCE: http: //jsfiddle.net/DKpGA/
在下面的 jsfiddle 中,如果您关注第一个元素,则轮廓将保留在下一个元素后面(单击并“拖动”第一个按钮以仅显示带边框的轮廓)。
它发生在 Firefox (edge) 和 IE10 中。
我尝试使用 z-index 来控制两个元素的 z 位置,但没有成功。我可能错过了一些东西。
Opera 可以优雅地处理它,但 Firefox 和 IE10 拒绝这样做......
显示 FF 中不良行为的屏幕截图:

由于默认值为255,我如何指定"无限"长度来保存诸如大文本之类的信息?它不应该是特定于供应商的解决方案,例如"columnDefinition"属性.
我正在尝试使用一个简单的 JAX RS 示例,但我没有这样做。
网页.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>PLAYGROUND</display-name>
<servlet-mapping>
<servlet-name>playground.Rest</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
REST.java
package playground;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
public class Rest extends Application {
@GET
@Path("hello")
public String helloworld() {
return "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
http://localhost/{warcontext}/api/hello使用浏览器 (GET)访问给我 404 错误状态
这可能是非常愚蠢的事情,但我无法弄清楚。
使用:JBoss EAP 6.1.0 (Java EE 6)
我有一个.ear,一个.jar和一个.war包。我正在通过检查文件系统和注册映射动态地读取我的 servlet 类。
问题是它适用于开发,我能够读取目录并且正确的文件名确实能够创建映射。问题是如果我打包我的耳朵是不行的:
File( ... ).isDirectory()
File( ... ).listFiles()
null一个有效的目录路径。我已经通过检测不以扩展名结尾的结束路径解决了目录检查问题(出于我的目的,这样的验证就足够了),但我仍然无法列出给定路径中的文件。
鉴于这种情况,我有一个问题:
如何在运行时从包中列出文件名.war?
当前代码:
private void addAllFiles( File dir, ArrayList<ConventionPath> list ) {
for ( File file : dir.listFiles() ) { // dir.listFiles() comes null here =/
String absolutePath = file.getAbsolutePath();
boolean isActionDir = ConventionFiles.isActionDir( absolutePath, fileSeparator );
boolean isActionFile = ConventionFiles.isActionFile( absolutePath );
if ( isActionDir ) {
addAllFiles( file, list );
}
if …Run Code Online (Sandbox Code Playgroud)