好吧,这个问题几乎说明了一切.使用JPARepository如何更新实体?
JPARepository只有一个save方法,它不会告诉我它是否实际创建或更新.例如,我将一个简单的Object插入数据库User,它有三个字段:firstname和lastname以及age:
@Entity
public class User {
private String firstname;
private String lastname;
//Setters and getters for age omitted, but they are the same as with firstname and lastname.
private int age;
@Column
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
@Column
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
private long userId;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public long getUserId(){
return this.userId;
}
public …Run Code Online (Sandbox Code Playgroud) 我是Spring的新手
我也在stackoverflow中搜索过web和相关帖子.我找不到我真正需要的那个.
我的目标是在重定向期间将模型属性从控制器传递到jsp页面,并避免在URL中显示属性.
以下是使用jdo验证从数据存储区登录.
我的控制器:
@Controller
public class LoginController {
int count;
PersistenceManager pm = PMF.get().getPersistenceManager();
//Instance of data class
User user;
ModelAndView modelAndView=new ModelAndView();
@RequestMapping(value="/Login",method = RequestMethod.POST)
public ModelAndView loginValidate(HttpServletRequest req){
//Getting login values
String uname=req.getParameter("nameLogin");
String pswd1=req.getParameter("pswdLogin");
count=0;
user=new User();
//Generating Query
Query q = pm.newQuery(User.class);
q.setFilter("userName == userNameParam");
q.declareParameters("String userNameParam");
try{
List<User> results = (List<User>) q.execute(uname);
for (User u: results) {
String userName=u.getUserName();
if(userName.equals(uname)){
System.out.println(u.getPassword());
if(u.getPassword().equals(pswd1)){
count=count+1;
modelAndView.setViewName("redirect:welcome");
modelAndView.addObject("USERNAME",uname);
return modelAndView;
}
//rest of the logic
} …Run Code Online (Sandbox Code Playgroud) 我正在使用带有Spring安全性的BCryptPasswordEncoder.但问题是它为同一输入生成不同的编码密码.
String password = "123456";
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(password);
System.out.print(encodedPassword);
Run Code Online (Sandbox Code Playgroud)
每次产生不同的输出.
我正在尝试对表单的表单字段进行泛化.我想要有不同的parsley.js验证要求.html中简单字段的示例可能是:required 有2个非标准属性.
我尝试了以下方法,但得到的错误是:attr定义> 1次:
<input type=text required data-parsley-range=[1,100] />
Run Code Online (Sandbox Code Playgroud)
如何在th:attr中定义> 1个属性,只是插值?
奖金,我如何有条件地放置attrs,例如data-parsley-range,如果我可以避免它,我根本不想打印.范围也一样.
谢谢!
我想在 AWS 中提供测试和实时环境。我的环境包含 AWS 服务,如 Lambda、API-Gateway 等,用于测试目的和实时使用。
在 AWS 中分离测试环境和实时环境的最佳方法是什么?
创建一个具有主帐户的组织并将此主帐户用于实时环境,然后创建属于同一组织的另一个帐户并将其用于测试环境是否是个好主意?
我正在进行密码重置功能,为此,我使用百万美元模板.但这是我的简单html,它不会呈现.这告诉我波纹管错误:
@Bean
public ClassLoaderTemplateResolver emailTemplateResolver(){
ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
emailTemplateResolver.setPrefix("templates/mail/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode("HTML5");
emailTemplateResolver.setCharacterEncoding("UTF-8");
emailTemplateResolver.setOrder(1);
return emailTemplateResolver;
}
Run Code Online (Sandbox Code Playgroud)
我的百里香叶配置
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form th:action="@{/resetpassword(_key=${resetPasswordToken})}" method="post">
<div>
<input type="password" th:field="*{password}">
<input type="password">
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的demo.html是
@RequestMapping(value = "/resetpassword", method = RequestMethod.GET)
public String resetpasswordView(@RequestParam(value = "_key") String resetPasswordToken, final Model model) {
System.out.println(resetPasswordToken);
model.addAttribute("resetPasswordToken", resetPasswordToken);
return "demo";
}
Run Code Online (Sandbox Code Playgroud)
我的控制器是
@Bean
public ClassLoaderTemplateResolver emailTemplateResolver(){
ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
emailTemplateResolver.setPrefix("templates/mail/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode("HTML5");
emailTemplateResolver.setCharacterEncoding("UTF-8"); …Run Code Online (Sandbox Code Playgroud) 我想使用 Redis 来操作会话。但是我在运行 spring boot 应用程序时失败了。所以我猜这个错误来自 maven 依赖项,尤其是版本冲突。
这是我的 Maven 依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>biz.paluch.redis</groupId>
<artifactId>lettuce</artifactId>
<version>4.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.kstyrc</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我试图通过在 pom.xml 中集成嵌入式 redis 依赖项来避免通知键空间事件错误,但没有成功。
注意,我在上面的 pom.xml 中添加了两个依赖,其中 artifactId 是 spring-session-data-redis 和 …
我正在开发一个 Spring Boot 应用程序,它应该允许用户通过指定的应用程序 REST 接口间接从 Amazon S3 下载文件。为此,我有一个 REST-Controller,它向用户返回一个 InputStreamResource,如下所示:
@GetMapping(path = "/download/{fileId}")
public ResponseEntity<InputStreamResource> downloadFileById(@PathVariable("fileId") Integer fileId) {
Optional<LocalizedFile> fileForDownload = fileService.getConcreteFileForDownload(fileId);
if (!fileForDownload.isPresent()) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileForDownload.get().getFilename())
.body(new InputStreamResource(fileService.download(fileForDownload.get())));
}
Run Code Online (Sandbox Code Playgroud)
文件服务中的下载方法如下:
@Override
public InputStream download(LocalizedFile file) {
S3Object obj = s3client.getObject(bucketName, file.getFilename());
return obj.getObjectContent();
}
Run Code Online (Sandbox Code Playgroud)
我担心的是,来自 Amazon SDK 的输入流无法在控制器中显式关闭。getObjectContent() 方法的 AWS 文档中有以下警告,这让我对上述方法是否成功表示怀疑:
如果您检索 S3Object,则应尽快关闭此输入流,因为对象内容不会在内存中缓冲并直接从 Amazon S3 进行流式传输。此外,未能关闭此流可能会导致请求池被阻塞。
因此我的问题是:返回ResponseEntity<InputStreamResource>控制器是否安全?下载成功后这个InputStream会S3Object.getObjectContent()自动关闭吗?到目前为止,我的方法很成功,但我不太确定未来可能产生的后果。
问题:
${map}可以null。
<input type="text" th:value="${map.name}" />
Run Code Online (Sandbox Code Playgroud)
我需要什么:
如果name不是null则th:value=name不然th:value=""
<input type="text" th:value="${map.name != null ? map.name : ''}" />
Run Code Online (Sandbox Code Playgroud)
但我上面的代码无效
java ×5
spring-boot ×3
thymeleaf ×3
spring-mvc ×2
amazon-s3 ×1
aws-java-sdk ×1
bcrypt ×1
jpa ×1
jsp ×1
maven ×1
redirect ×1
redis ×1
spring ×1