JBoss登录Web应用程序错误-无法分析请求:java.lang.IllegalArgumentException:查询中的非法字符
我正在尝试开发一个登录系统,我遵循了Ticketmonster的结构。只有在登录后,main.html中的菜单容器才会被填充,内容会被登录模板填充,路由器会立即呈现登录视图,并应用该模板。单击“登录”按钮后,将创建一个Ajax请求并发送到其服务JBoss登录Web应用程序错误-无法分析请求:java.lang.IllegalArgumentException:查询中的非法字符,java,jquery,json,rest,jboss,Java,Jquery,Json,Rest,Jboss,我正在尝试开发一个登录系统,我遵循了Ticketmonster的结构。只有在登录后,main.html中的菜单容器才会被填充,内容会被登录模板填充,路由器会立即呈现登录视图,并应用该模板。单击“登录”按钮后,将创建一个Ajax请求并发送到其服务 这是登录视图中的登录功能: ` 这就是服务。更改为@Consumes会导致相同的结果 ` 这是服务器错误。经过一些研究,我想可能是 一个转义字符串问题,但我不认为它适用于TicketMonster 代码,或在教程中讨论 警告[org.jbos
- 这是登录视图中的登录功能:
- 这就是服务。更改为@Consumes会导致相同的结果
- 这是服务器错误。经过一些研究,我想可能是 一个转义字符串问题,但我不认为它适用于TicketMonster 代码,或在教程中讨论
- 这是Firebug上的错误
jquery-2.0.3.js(第7845行) “网络错误:400错误请求-本地主机:8180/MCC2/rest/users?{%22username%22:%22User%20Name%22,%22password%22:%22password%22}&=1426757495550” 用户?{…7495550 SyntaxError:JSON.parse:JSON数据login.js(第49行,第41列)第1行第1列的意外字符 var errors=$.parseJSON(error.responseText).errors
- 切换Ajax请求的类型和服务上的注释 发布时,在服务器上没有给出错误,但在Firebug中出现以下错误
- 我在服务开始时设置了一个断点,并且在所有 在任何情况下,都不会输入服务
@SuppressWarnings(“串行”)
@实体
公共类用户实现可序列化{
@身份证
@生成值
私人长id;
@NotNull
@尺寸(最小值=5,最大值=16)
@模式(regexp=“[a-zA-Z0-9_234;]*”,message=“必须仅包含小写和大写字母、数字和下划线!”)
@列(唯一=真)
私有字符串用户名;
@NotNull
@尺寸(最小值=5,最大值=16)
私有字符串密码;
@NotNull
@尺寸(最小值=1,最大值=25)
@模式(regexp=“[^0-9]*”,message=“不得包含数字”)
私有字符串名;
@NotNull
@尺寸(最小值=1,最大值=25)
@模式(regexp=“[^0-9]*”,message=“不得包含数字”)
私有字符串lastName;
@NotNull
@列(唯一=真)
@空空如也
@电子邮件(message=“不是有效的电子邮件格式”)
私人字符串电子邮件;
@尺寸(最小值=10,最大值=12)
@数字(分数=0,整数=12)
私有字符串电话号码;
@尺寸(最小值=1,最大值=300)
私有字符串描述;
//@NotNull我认为这句话:
data:JSON.stringify(userLoginRequest)
应该是
data:encodeURIComponent(JSON.stringify(userLoginRequest))
因为您需要对查询字符串中发送的任何数据进行URL编码。JSONification可能会生成需要在在线发送之前进行编码的字符,如果失败,服务器可能会遇到解析问题,这里就是这种情况。修复了错误,但现在:1.我想知道您为什么不需要在TicketTM中使用它onster?2.我现在遇到了一个不同的错误:WARN[org.jboss.resteasy.core.SynchronousDispatcher](http localhost/127.0.0.1:8180-7)无法执行GET/users:org.jboss.resteasy.spi.ReaderException:java.io.eofeException:由于输入结束,没有要映射到对象的内容。我感觉我应该一直在使用POST。更改为POST可以消除服务器错误,但会出现上面提到的Firebug错误。我应该在什么时候使用POST vs GET和消费s vs PRODUCTS?我修复了主要问题。转义字符似乎仅在GET请求中才需要。更改为POST将使用JSON.stringify(userLoginRequest)以所需格式发送userLoginRequest。对于POST,主要问题是1.请求类中没有伪构造函数。2.我在更新中提到的部署错误(UserListId)似乎已经产生了影响,所以现在我注释了所有涉及UserListID的内容,直到我让登录系统正常工作。服务断点正在中断,我正在修复一个新错误。我很快会更新:)在get vs POST上,get用于获取资源的状态。它是一个idem有效的操作-不应该更改资源的状态。因此,多个get不会更改状态,可能用于获取最新状态。在使用products vs Consumes时,它们分别表示HTTP响应正文或请求正文的内容类型。在注释方法时,您可以使用其中一个或两个get,具体取决于请求或请求sponse有一个需要适当解析的主体。这是必要的,因为客户端和服务器都不会假定内容类型为JSON、XML或任何其他内容类型。
@SuppressWarnings("serial")
@Entity
public class User implements Serializable {
@Id
@GeneratedValue
private Long id;
@NotNull
@Size(min = 5, max = 16)
@Pattern(regexp = "[a-zA-Z0-9_]*", message = "Must only contain small and capital letters, numbers, and underscore!")
@Column(unique=true)
private String username;
@NotNull
@Size(min = 5, max = 16)
private String password;
@NotNull
@Size(min = 1, max = 25)
@Pattern(regexp = "[^0-9]*", message = "Must not contain numbers")
private String firstName;
@NotNull
@Size(min = 1, max = 25)
@Pattern(regexp = "[^0-9]*", message = "Must not contain numbers")
private String lastName;
@NotNull
@Column(unique = true)
@NotEmpty
@Email(message = "Not a valid email format")
private String email;
@Size(min = 10, max = 12)
@Digits(fraction = 0, integer = 12)
private String phoneNumber;
@Size(min = 1, max = 300)
private String description;
// @NotNull <--commented since we don't have a setter
private Date creationDate = new Date();
@NotNull
private Role role = Role.MEMBER;
@NotNull
private boolean enabled = true;
private Set<Long> userListIds = new HashSet<Long>();
public void addUserToUserlist(Long newUserId){
userListIds.add(newUserId);
}
public void removeUserFromUserlist(Long newUserId){
userListIds.remove(newUserId);
}
public Set<Long> getUserListIds() {
return userListIds;
}
public void setUserListIds(Set<Long> userListIds) {
this.userListIds = userListIds;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getCreationDate() {
return creationDate;
}
// public void setCreationDate(Date creationDate) {
// this.creationDate = creationDate;
// }
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String name) {
this.firstName = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "User [username=" + username + ", firstName=" + firstName
+ ", lastName=" + lastName + ", email=" + email
+ ", phoneNumber=" + phoneNumber + ", creationDate="
+ creationDate + ", role=" + role + ", enabled=" + enabled
+ "]";
}
}
data:JSON.stringify(userLoginRequest)
data:encodeURIComponent(JSON.stringify(userLoginRequest))