我有一个MySQL表定义:
File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....
Run Code Online (Sandbox Code Playgroud)
我在这里读了MySQL不支持UNIQUE CONSTRAINT与WHERE条件.对于每个customerId,我们只有一个primaryImage = 1.
那么我还能做些什么来强制执行这个约束呢?
我写了一个过滤器,需要每一个在我的网站上的网址,除了CSS,JS和图像文件访问时被调用.所以在我的定义中,我希望有类似的东西:
<filter-mapping>
<filter-name>myAuthorizationFilter</filter-name>
<url-pattern>NOT /css && NOT /js && NOT /images</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
反正有没有这样做?我能找到的唯一文件只有/*
更新:
我最终使用类似于Mr.J4mes提供的答案:
private static Pattern excludeUrls = Pattern.compile("^.*/(css|js|images)/.*$", Pattern.CASE_INSENSITIVE);
private boolean isWorthyRequest(HttpServletRequest request) {
String url = request.getRequestURI().toString();
Matcher m = excludeUrls.matcher(url);
return (!m.matches());
}
Run Code Online (Sandbox Code Playgroud) 我们使用的是spring security 3.0.5,Java 1.6和Tomcat 6.0.32.在我们的.xml配置文件中,我们得到了:
<form-login login-page="/index.html" default-target-url="/postSignin.html" always-use-default-target="true"
authentication-failure-handler-ref="authenticationFailureHandler"/>
Run Code Online (Sandbox Code Playgroud)
我们authenticationFailureHandler定义为:
<beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
<beans:property name="exceptionMappings">
<beans:props>
<beans:prop key="org.springframework.security.authentication.BadCredentialsException">/index.html?authenticationFailure=true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
Java的
@RequestMapping(params={"authenticationFailure=true"}, value ="/index.html")
public String handleInvalidLogin(HttpServletRequest request) {
//... How can I get the username that was used???
// I've tried:
Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME_KEY");
Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME"); // deprecated
}
Run Code Online (Sandbox Code Playgroud)
因此,我们将所有人都BadCredentialsExceptions指向index.html和IndexController.在IndexController我想要获得username用于失败登录尝试的那个.我怎样才能做到这一点?
我已经阅读了jsFiddle用户指南,了解他们的JSON echo功能,但没有运气生成一个有效的jsFiddle来使用JQuery回显JSON消息.
如何创建一个jsFiddle来回应他们的指南中的JSON:
data: {
json: JSON.encode({
text: 'some text',
array: [1, 2, 'three'],
object: {
par1: 'another text',
par2: [3, 2, 'one'],
par3: {}
}
}),
delay: 3
}
Run Code Online (Sandbox Code Playgroud)
提供的一个例子是我从未使用过的Mootools.因此,从mootools示例到JQuery的简单转换就足够了.
我正在使用Spring.我有一个带有表单的JSP:在其中选择显示用户列表.在这种情况下,用户名或ID对用户意义不大,因此我需要显示名字姓氏.
我试过了:
<form:select id="userSelect" name="userId" path="user.id">
<option value="">Select to Edit</option>
<form:options items="${user.userList}" itemValue="id" itemLabel="lastname firstname" />
</form:select>
Run Code Online (Sandbox Code Playgroud)
但这给了我一个很大的错误.如何让itemLabels显示姓氏,名字?
有人可以在MySql中解释REPLACE,INSERT和UPDATE之间的区别吗?
给定一个字符串就像Marty Mcfly有一个正则表达式或其他一行解决方案来大写'f'所以我得到了Marty McFly?
我总是可以指望第一个和最后一个之间的空格,而姓氏的第一个字母(即M)将始终是大写字母.
我对任何javascript,jquery,正则表达式解决方案都非常开放,我只需要简短而甜蜜.
我有一个方法,使用indexOf和substring将字符串分开,但我希望有一个正则表达式或类似的东西.
我正在使用Tomcat 6.0.32,Spring Security 3.0.5
在我的网络应用程序中,一些用户可以更改其他用户权限.发生这种情况时,我想为其权限已更改的用户的任何会话无效.这有可能吗?如果可以的话怎么样?
我正在尝试使用JSTL来构建表单.我有几个月的选择输入,但我需要几个月总是两位数,即填充左边的零为1-9.
我有这个,但显而易见它没有给我我想要的东西.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<select class="formInput">
<c:forEach var="i" begin="1" end="12" step="1" varStatus ="status">
<option><fmt:formatNumber pattern="##" value="${i}" /></option>
</c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)
这必须在之前完成,但经过一些搜索我找不到一个例子.
我们将从Thymeleaf 2.1升级到3.0.5。我们当前的设置(升级之前)具有许多定义并存储在数据库表中的百里香模板。
当我们尝试升级到3.x时,我们的2.1代码不再起作用...好的,但是我们找不到关于如何使用Thymeleaf 3.0.5进行基本相同操作的良好示例。有人实施过吗?
即使是关于如何实现org.thymeleaf.templateresolver.StringTemplateResolver的一个不错的例子,也可能会将我们推向正确的方向……但是我们也找不到任何东西。
这是我们在2.1中使用的:
public class ThymeleafTemplateResolver extends TemplateResolver {
private final static String PREFIX = "";
public ThymeleafTemplateResolver() {
setResourceResolver(new DbResourceResolver());
setResolvablePatterns(Sets.newHashSet(PREFIX + "*"));
}
@Override
protected String computeResourceName(TemplateProcessingParameters params) {
String templateName = params.getTemplateName();
return templateName.substring(PREFIX.length());
}
private class DbResourceResolver implements IResourceResolver {
@Override
public InputStream getResourceAsStream(TemplateProcessingParameters params, String template) {
ThymeleafTemplateDao thymeleaftemplateDao = ApplicationContextProvider.getApplicationContext().getBean(ThymeleafTemplateDao.class);
ThymeleafTemplate thymeleafTemplate = thymeleaftemplateDao.findByTemplate(template);
if (thymeleafTemplate != null) {
return new ByteArrayInputStream(thymeleafTemplate.getContent().getBytes());
}
return null;
}
@Override
public String getName() { …Run Code Online (Sandbox Code Playgroud)