Значение сеанса struts2 не отображается в JSP [дубликат]

Вот как я генерирую уникальный id:

public static String getDeviceId(Context ctx)
{
    TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);

    String tmDevice = tm.getDeviceId();
    String androidId = Secure.getString(ctx.getContentResolver(), Secure.ANDROID_ID);
    String serial = null;
    if(Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) serial = Build.SERIAL;

    if(tmDevice != null) return "01" + tmDevice;
    if(androidId != null) return "02" + androidId;
    if(serial != null) return "03" + serial;
    // other alternatives (i.e. Wi-Fi MAC, Bluetooth MAC, etc.)

    return null;
}
1
задан Roman C 6 April 2014 в 15:59
поделиться

1 ответ

Да, они не совпадают, в скриптлете, в котором используется неявный объект сеанса http, в атрибуте тега struts вы ссылаетесь на объект карты сеансов struts, полученный через OGNL. У тебя ничего нет, потому что они разные. Чтобы использовать карту сеансов struts, вы должны реализовать SessionAware в действии. Таким образом, перехватчик конфигурации сервлетов будет вводить в него сеанс, тогда вы можете использовать карту сеанса, чтобы поместить туда значения, которые будут доступны через OGNL.

Пример реализации SessionAware:

private Map<String, Object> session;

@Override
public void setSession(Map<String, Object> session) {
 this.session = session;
} 

lazy исключение инициализации происходит, потому что вы не реализовали toString в объектах модели.

См. Доступ к приложениям, сеансу, объектам запроса

1
ответ дан Roman C 25 August 2018 в 10:06
поделиться
Другие вопросы по тегам:

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