Форма Java Spring проверяет, содержит ли входная строка специальные символы или нет - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь создать форму Java Spring, которая проверяет, содержит ли входная строка специальные символы или нет.Например, когда пользователь вводит строку, содержащую специальные символы, появляется сообщение о том, что входная строка содержит специальные символы.

Мой вопрос заключается в том, как реализовать функцию java для проверки наличия специальных символов во входной строке?

Модель

 package com.mkyong.customer.model;

public class Customer {
	
	String userName;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
	
}

Контроллер

package com.mkyong.customer.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.mkyong.customer.model.Customer;

public class TextBoxController extends SimpleFormController{
	
	public TextBoxController(){
		setCommandClass(Customer.class);
		setCommandName("customerForm");
	}
	
	@Override
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {

		Customer customer = (Customer)command;
		return new ModelAndView("CustomerSuccess","customer",customer);
	
	}
	
}

CustomerForm

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<style>
.error {
	color: #ff0000;
}

.errorblock{
	color: #000;
	background-color: #ffEEEE;
	border: 3px solid #ff0000;
	padding:8px;
	margin:16px;
}
</style>
</head>

<body>
<h2>Java Textbox Special Characters</h2>

<form:form method="POST" commandName="customerForm">

<form:errors path="*" cssClass="errorblock" element="div"/>

<table>
<tr>
<td>Keyword:</td>
<td><form:input path="userName" /></td>
<td><form:errors path="userName" cssClass="error" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>

</body>
</html>

CustomerSuccess

<html>
<body>
<h2>Java Textbox Special Characters</h2>

Keyword: ${customer.userName}

</body>
</html>

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Весной вы можете получить значение вашей формы следующим образом:

@RequestMapping(value = "/", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("userName")String username){
    // And now you can check with the regex pattern from hovanessyan if it contains special characters
   Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");
   if (regex.matcher(username).find()) {
      // found
   }
}

Надеюсь, это поможет.

0 голосов
/ 14 февраля 2019

Отдельный метод для преобразования специального символа

if(checkSpecialChar("^[^<>{}\"/|;:.,~!?@#$%^=&*\\]\\\\()\\[¿§«»ω⊙¤°℃℉€¥£¢¡®©0-9_+]*$", source){
    // add your staff here
}

public boolean checkSpecialChar(String regex, String source) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(source);
    return matcher.find();
0 голосов
/ 14 февраля 2019

Вы можете получить список всех специальных символов и проверить его с помощью регулярных выражений:

Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]"); // fill in any chars that you consider special

if (regex.matcher(stringToCheck).find()) {
    // found
} 

Вы также можете просмотреть Guava's CharMatcher (без регулярных выражений и более читабельный).Вы можете создать свою собственную логику сопоставления следующим образом:

boolean isAMatch = CharMatcher.WHITESPACE
    .or(CharMatcher.anyOf("[$&+,:;=\\\\?@#|/'<>.^*()%!-]")) // fill in any chars that you consider special
    .matchesAllOf(stringToCheck);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...