篇首语:本文由小编为大家整理,主要介绍了如何将STRING类型的值转换为BASE64 STRING类型的值相关的知识,希望对你有一定的参考价值。
STRING 转BASE64 STRING , 其中BASE64编码不带回车换行的格式
import java.net.*; import java.io.*; public static String getBASE64(String s) if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); // 将 BASE64 编码的字符串 s 进行解码 public static String getFromBASE64(String s) if (s == null) return null; BASE64Decoder decoder = new BASE64Decoder(); try byte[] b = decoder.decodeBuffer(s); return new String(b); catch (Exception e) return null; Sun有现成的类,不过这个类不是官方的,编译的时候会有一个警告,不用理会 参考技术A STRING 转BASE64 STRING String str = "你的字符串"; String base64Str = (new sun.misc.BASE64Encoder()).encode(str.getBytes()); 还可以转回来的,不知道需不需要麻烦采纳,谢谢!本回答被提问者和网友采纳
如何修复错误:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;
【中文标题】如何修复错误:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;【英文标题】:How do I fix error: Failed to convert value of type "java.lang.String" to required type "java.lang.Long"; 【发布时间】:2019-09-05 22:03:30 【问题描述】:我正在开发一个项目经理 - 网络应用程序,该应用程序允许您以会员身份登录并加入不同类型的项目。成员可以参与多个项目。项目和成员实体通过成员资格实体连接。每次登录的成员加入项目时,都会创建一个新的成员实体。
但是,在会员单击 joinProject.html 页面上的加入按钮后,我无法创建新的会员资格。我不断收到以下错误消息:
(type=Bad Request, status=400).Failed to convert value of type "java.lang.String" to required type "java.lang.Long"; nested exception is java.lang.NumberFormatException: For input string: "saveMembership"
目标是将已登录的成员添加到项目中。可以在 projectDetails.html -page 上看到新成员资格。
我正在使用 Spring Boot、Thymeleaf 和 JPA。我有一种感觉,这是一件非常简单和愚蠢的事情,但我就是找不到问题所在。 :(
如果您需要查看更多代码或信息,我很乐意提供。
感谢您的宝贵时间!
这是我尝试使用的 MembershipCreatorObject 类来将所需的数据输入我的控制器:
public class MembershipCreatorObject private String id; private String username; private String jobDescription; public MembershipCreatorObject() super(); public MembershipCreatorObject(String id, String username, String jobDescription) super(); this.id = id; this.username = username; this.jobDescription = jobDescription; public String getId() return id; public void setId(String id) this.id = id; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getJobDescription() return jobDescription; public void setJobDescription(String jobDescription) this.jobDescription = jobDescription;
这是我的控制器:
@RequestMapping(value= "/joinProject/projectId") public String joinProject(@PathVariable("projectId") Long urlId, Model model) model.addAttribute("mObject", new MembershipCreatorObject()); model.addAttribute("project", projectRepo.findByProjectId(urlId)); return "joinProject"; @RequestMapping(value="/saveMembership", method=RequestMethod.POST) public String saveMembership(MembershipCreatorObject mObject) String id = mObject.getId(); Long idConverted = Long.parseLong(id); String username = mObject.getUsername(); String description = mObject.getJobDescription(); Project projectToAdd = projectRepo.findByProjectId(idConverted); Member memberToAdd = memberRepo.findByUsername(username); Membership membershipToAdd = new Membership(description, memberToAdd, projectToAdd); membershipRepo.save(membershipToAdd); return "redirect:/projectCatalog";
这是 joinProject -html 文件。
Join Project
Logged in as: [[$#httpServletRequest.remoteUser]]
【问题讨论】:
【参考方案1】:看起来您正在尝试将文字字符串“saveMembership”转换为 long,而不是 long 的字符串表示形式,例如:
String str = "12323445664546544564974";Long lng = Long.parseLong(str);
这是我基于异常堆栈跟踪的假设,其中指出“NumberFormatException:对于输入字符串:“saveMembership””
【讨论】:
【参考方案2】:我不是 html 或 thymeleaf 专家,但我认为您在 html 中输入了错误的内容。我相信当您点击submit
时,您的代码会将POST
请求发送到/joinProject/saveMembership
而不是/saveMembership
。您可以在浏览器中轻松测试(检查 POST 请求的 URL 是什么)
【讨论】:
以上是关于如何将STRING类型的值转换为BASE64 STRING类型的值的主要内容,如果未能解决你的问题,请参考以下文章