Преобразовать byte[] в String для файла HTML

Я загружаю файл HTML в БД как byte[] в столбце blob, а в другой части мне нужно получить этот файл и отобразить в текстовом поле, я могу получить из БД как байты и преобразовать его в строку, но при отображении его показывает как формат шифрования.

Это приложение struts:

Это мой JSP:

<tr>
 <td colspan="3" class="searchinput">   
      <html:textarea property="template" cols="100" rows="10" name="sendEmailForm">
      </html:textarea>
 </td>
</tr>

Это моя форма bean:

private String template = null;
public String getTemplate() {
   return template;
}

public void setTemplate(String template) {
   this.template = template;
}

Это мой боб:

private byte[] templateContent = null;

public String getHtmlTemplateContent() {
  return templateContent.toString();
}

public byte[] getTemplateContent() {
  return templateContent;
}

public void setTemplateContent(byte[] templateContent) {
  this.templateContent = templateContent;
}

public void setTemplateContent(Object templateContent) {
  this.templateContent = (byte[])templateContent;
}

Это мое действие:

templatesDataBean = (TemplatesDataBean)SendEmailManager.getTemplate(action, actor, sendEmailBean);
sendEmailForm.setTemplate(new String(templatesDataBean.getHtmlTemplateContent()));

Как это можно решить? Заранее спасибо.


person Community    schedule 12.11.2010    source источник
comment
Возможно, это возможность кодирования?   -  person Buhake Sindi    schedule 12.11.2010
comment
Что вы подразумеваете под шифрованием данных?   -  person Buhake Sindi    schedule 12.11.2010
comment
Зачем вам это нужно как byte[] в первую очередь? Если это HTML, обычная строка должна работать полностью. Или ваша БД не поддерживает сохранение строки в БД? ;)   -  person Mikko Wilkman    schedule 12.11.2010
comment
разве это не должно быть закодировано как UTF-8?   -  person tchrist    schedule 13.11.2010


Ответы (1)


Похоже на escapeXML проблему. По умолчанию это true. Я не мог ничего найти для классических Struts. Кстати, в Struts2 есть элемент attribute с именем escape для элемента <s:property>. Однако вы можете добиться этого с помощью JSTL.

<tr>
 <td colspan="3" class="searchinput">   
      <textarea cols="100" rows="10">
           <c:out value="${sendEmailForm.template}" escapeXml="false"/>
      </textarea>
 </td>
</tr>

И я считаю, что даже это должно работать как шарм.

<tr>
 <td colspan="3" class="searchinput">   
      <textarea cols="100" rows="10">
           ${sendEmailForm.template}
      </textarea>
 </td>
</tr>

Если это какая-то проблема с кодировкой, попробуйте создать экземпляр String с помощью этого конструктора.

new String(templatesDataBean.getHtmlTemplateContent(), Charset.UTF-8)
person Adeel Ansari    schedule 12.11.2010