Добавить значение по умолчанию в & lt; form: textarea & gt; весной MVC [дубликат]

В дополнение к настройке default_charset в php.ini вы можете отправить правильную кодировку с помощью header() из вашего кода перед любым выходом:

header('Content-Type: text/html; charset=utf-8');

Работа с Unicode в PHP легко, если вы понимаете, что большинство строковых функций не работают с Unicode, а некоторые могут полностью блокировать строки. PHP считает, что «символы» имеют длину 1 байт. Иногда это нормально (например, explode() ищет только последовательность байтов и использует его как разделитель - так что неважно, какие фактические персонажи вы ищете). Но в других случаях, когда функция фактически предназначена для работы с символами , PHP не знает, что ваш текст имеет многобайтовые символы, которые находятся в Unicode.

Хорошая библиотека для проверки есть phputf8 . Это перезаписывает все «плохие» функции, чтобы вы могли безопасно работать с строками UTF8. Существуют расширения, такие как расширение mbstring, которые тоже пытаются это сделать для вас, но я предпочитаю использовать библиотеку, потому что она более переносимая (но я пишу продукты массового рынка, так что это важно для меня). Но phputf8 может использовать mbstring за кулисами, во всяком случае, для повышения производительности.

13
задан informatik01 5 June 2013 в 15:46
поделиться

2 ответа

Просто удалите «путь» из тега ввода jsp и используйте HttpServletRequest для извлечения оставшихся данных.

Например, у меня есть компонент, похожий на

public class SomeData {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Затем в jsp i будет иметь дополнительные поля данных для отправки в обычный html-тег

<form:form method="post" action="somepage" commandName="somedata">
    <table>
    <tr>
        <td>name</td>
        <td><form:input path="name" /></td>
    </tr>
    <tr>
        <td>age</td>
        <!--Notice, this is normal html tag, will not be bound to an object -->
        <td><input name="age" type="text"/></td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="submit" value="send"/>
        </td>
    </tr>
</table>
</form:form>

Обратите внимание, что у компонента somedata есть поле имени, возраст которого не указан. Поэтому поле возраста добавляется без «пути». Без атрибута path свойство объекта не будет привязано к этому полю.

на контроллере i будет использовать HttpServletRequest, например,

@RequestMapping("/somepage")
public String someAction(@ModelAttribute("somedata") SomeData data, Map<String, Object> map,
                                HttpServletRequest request) {

       System.out.println("Name=" + data.getName() + " age=" + request.getParameter("age"));

       /* do some process and send back the data */
        map.put("somedata", data);
        map.put("age", request.getParameter("age"));

        return "somepage";
   }

при доступе к данным на экране ,

<table>
    <tr>
        <td>name</td>
        <td>${somedata.name}</td>
    </tr>
    <tr>
        <td>age</td>
        <td>${age}</td>
    </tr>
 </table>

somedata - это bean, который предоставляет свойство name, а age - явно установленный атрибут контроллером.

30
ответ дан kalyan 23 August 2018 в 17:27
поделиться

Если вы не хотите создавать другой класс (bean), хотя он должен быть там, то кроме @ModelAttrbute можно также использовать @RequestParam.

public String someAction(@RequestParam("somedata") String data)
{
------
}
1
ответ дан Michael Petrotta 23 August 2018 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: